// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: openrtb-xapi.proto

package com.magnite.openrtb.v2;

public final class OpenRtbXapi {
  private OpenRtbXapi() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.bidRequest);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.imp);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.video);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.banner);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.app);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.site);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.publisher);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.device);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.geo);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.user);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.regs);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.source);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.native_);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.nativeRequest);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.bidResponse);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.seatbid);
    registry.add(com.magnite.openrtb.v2.OpenRtbXapi.bid);
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface KeyValuePairOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.KeyValuePair)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Generic key.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * Generic key.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * Generic key.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @return A list containing the value.
     */
    java.util.List<java.lang.String>
        getValueList();
    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @return The count of value.
     */
    int getValueCount();
    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @param index The index of the element to return.
     * @return The value at the given index.
     */
    java.lang.String getValue(int index);
    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the value at the given index.
     */
    com.google.protobuf.ByteString
        getValueBytes(int index);
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.KeyValuePair}
   */
  public static final class KeyValuePair extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.KeyValuePair)
      KeyValuePairOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use KeyValuePair.newBuilder() to construct.
    private KeyValuePair(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private KeyValuePair() {
      key_ = "";
      value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new KeyValuePair();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private KeyValuePair(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                value_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              value_.add(bs);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          value_ = value_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_KeyValuePair_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_KeyValuePair_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.class, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * <pre>
     * Generic key.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Generic key.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Generic key.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList value_;
    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @return A list containing the value.
     */
    public com.google.protobuf.ProtocolStringList
        getValueList() {
      return value_;
    }
    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @return The count of value.
     */
    public int getValueCount() {
      return value_.size();
    }
    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @param index The index of the element to return.
     * @return The value at the given index.
     */
    public java.lang.String getValue(int index) {
      return value_.get(index);
    }
    /**
     * <pre>
     * List of generic values.
     * </pre>
     *
     * <code>repeated string value = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the value at the given index.
     */
    public com.google.protobuf.ByteString
        getValueBytes(int index) {
      return value_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      for (int i = 0; i < value_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < value_.size(); i++) {
          dataSize += computeStringSizeNoTag(value_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValueList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair other = (com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (!getValueList()
          .equals(other.getValueList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (getValueCount() > 0) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValueList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.KeyValuePair}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.KeyValuePair)
        com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_KeyValuePair_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_KeyValuePair_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.class, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_KeyValuePair_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair build() {
        com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair result = new com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((bitField0_ & 0x00000002) != 0)) {
          value_ = value_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (!other.value_.isEmpty()) {
          if (value_.isEmpty()) {
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureValueIsMutable();
            value_.addAll(other.value_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * Generic key.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Generic key.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Generic key.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Generic key.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Generic key.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Generic key.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureValueIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          value_ = new com.google.protobuf.LazyStringArrayList(value_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @return A list containing the value.
       */
      public com.google.protobuf.ProtocolStringList
          getValueList() {
        return value_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @return The count of value.
       */
      public int getValueCount() {
        return value_.size();
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @param index The index of the element to return.
       * @return The value at the given index.
       */
      public java.lang.String getValue(int index) {
        return value_.get(index);
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the value at the given index.
       */
      public com.google.protobuf.ByteString
          getValueBytes(int index) {
        return value_.getByteString(index);
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @param index The index to set the value at.
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @param value The value to add.
       * @return This builder for chaining.
       */
      public Builder addValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @param values The value to add.
       * @return This builder for chaining.
       */
      public Builder addAllValue(
          java.lang.Iterable<java.lang.String> values) {
        ensureValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, value_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of generic values.
       * </pre>
       *
       * <code>repeated string value = 2;</code>
       * @param value The bytes of the value to add.
       * @return This builder for chaining.
       */
      public Builder addValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.KeyValuePair)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.KeyValuePair)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<KeyValuePair>
        PARSER = new com.google.protobuf.AbstractParser<KeyValuePair>() {
      @java.lang.Override
      public KeyValuePair parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new KeyValuePair(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<KeyValuePair> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<KeyValuePair> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WindowOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.Window)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Referrer url of the highest accessible window.
     * </pre>
     *
     * <code>optional string url = 1;</code>
     * @return Whether the url field is set.
     */
    boolean hasUrl();
    /**
     * <pre>
     * Referrer url of the highest accessible window.
     * </pre>
     *
     * <code>optional string url = 1;</code>
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     * <pre>
     * Referrer url of the highest accessible window.
     * </pre>
     *
     * <code>optional string url = 1;</code>
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString
        getUrlBytes();

    /**
     * <pre>
     * The iframe depth.
     * </pre>
     *
     * <code>optional int32 depth = 2;</code>
     * @return Whether the depth field is set.
     */
    boolean hasDepth();
    /**
     * <pre>
     * The iframe depth.
     * </pre>
     *
     * <code>optional int32 depth = 2;</code>
     * @return The depth.
     */
    int getDepth();

    /**
     * <pre>
     * Minimum width of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 w = 3;</code>
     * @return Whether the w field is set.
     */
    boolean hasW();
    /**
     * <pre>
     * Minimum width of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 w = 3;</code>
     * @return The w.
     */
    int getW();

    /**
     * <pre>
     * Minimum height of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 h = 4;</code>
     * @return Whether the h field is set.
     */
    boolean hasH();
    /**
     * <pre>
     * Minimum height of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 h = 4;</code>
     * @return The h.
     */
    int getH();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.Window}
   */
  public static final class Window extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.Window)
      WindowOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Window.newBuilder() to construct.
    private Window(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Window() {
      url_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Window();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Window(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              url_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              depth_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              w_ = input.readUInt32();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              h_ = input.readUInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_Window_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_Window_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.Window.class, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder.class);
    }

    private int bitField0_;
    public static final int URL_FIELD_NUMBER = 1;
    private volatile java.lang.Object url_;
    /**
     * <pre>
     * Referrer url of the highest accessible window.
     * </pre>
     *
     * <code>optional string url = 1;</code>
     * @return Whether the url field is set.
     */
    @java.lang.Override
    public boolean hasUrl() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Referrer url of the highest accessible window.
     * </pre>
     *
     * <code>optional string url = 1;</code>
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          url_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Referrer url of the highest accessible window.
     * </pre>
     *
     * <code>optional string url = 1;</code>
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEPTH_FIELD_NUMBER = 2;
    private int depth_;
    /**
     * <pre>
     * The iframe depth.
     * </pre>
     *
     * <code>optional int32 depth = 2;</code>
     * @return Whether the depth field is set.
     */
    @java.lang.Override
    public boolean hasDepth() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The iframe depth.
     * </pre>
     *
     * <code>optional int32 depth = 2;</code>
     * @return The depth.
     */
    @java.lang.Override
    public int getDepth() {
      return depth_;
    }

    public static final int W_FIELD_NUMBER = 3;
    private int w_;
    /**
     * <pre>
     * Minimum width of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 w = 3;</code>
     * @return Whether the w field is set.
     */
    @java.lang.Override
    public boolean hasW() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Minimum width of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 w = 3;</code>
     * @return The w.
     */
    @java.lang.Override
    public int getW() {
      return w_;
    }

    public static final int H_FIELD_NUMBER = 4;
    private int h_;
    /**
     * <pre>
     * Minimum height of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 h = 4;</code>
     * @return Whether the h field is set.
     */
    @java.lang.Override
    public boolean hasH() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Minimum height of any iframe traversed between the video player and window.top.
     * </pre>
     *
     * <code>optional uint32 h = 4;</code>
     * @return The h.
     */
    @java.lang.Override
    public int getH() {
      return h_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, url_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, depth_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(3, w_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(4, h_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, url_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, depth_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, w_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, h_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.Window)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.Window other = (com.magnite.openrtb.v2.OpenRtbXapi.Window) obj;

      if (hasUrl() != other.hasUrl()) return false;
      if (hasUrl()) {
        if (!getUrl()
            .equals(other.getUrl())) return false;
      }
      if (hasDepth() != other.hasDepth()) return false;
      if (hasDepth()) {
        if (getDepth()
            != other.getDepth()) return false;
      }
      if (hasW() != other.hasW()) return false;
      if (hasW()) {
        if (getW()
            != other.getW()) return false;
      }
      if (hasH() != other.hasH()) return false;
      if (hasH()) {
        if (getH()
            != other.getH()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUrl()) {
        hash = (37 * hash) + URL_FIELD_NUMBER;
        hash = (53 * hash) + getUrl().hashCode();
      }
      if (hasDepth()) {
        hash = (37 * hash) + DEPTH_FIELD_NUMBER;
        hash = (53 * hash) + getDepth();
      }
      if (hasW()) {
        hash = (37 * hash) + W_FIELD_NUMBER;
        hash = (53 * hash) + getW();
      }
      if (hasH()) {
        hash = (37 * hash) + H_FIELD_NUMBER;
        hash = (53 * hash) + getH();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.Window parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.Window prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.Window}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.Window)
        com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_Window_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_Window_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.Window.class, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.Window.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        url_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        depth_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        w_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        h_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_Window_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.Window getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.Window build() {
        com.magnite.openrtb.v2.OpenRtbXapi.Window result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.Window buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.Window result = new com.magnite.openrtb.v2.OpenRtbXapi.Window(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.url_ = url_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.depth_ = depth_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.w_ = w_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.h_ = h_;
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.Window) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.Window)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.Window other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance()) return this;
        if (other.hasUrl()) {
          bitField0_ |= 0x00000001;
          url_ = other.url_;
          onChanged();
        }
        if (other.hasDepth()) {
          setDepth(other.getDepth());
        }
        if (other.hasW()) {
          setW(other.getW());
        }
        if (other.hasH()) {
          setH(other.getH());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.Window parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.Window) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object url_ = "";
      /**
       * <pre>
       * Referrer url of the highest accessible window.
       * </pre>
       *
       * <code>optional string url = 1;</code>
       * @return Whether the url field is set.
       */
      public boolean hasUrl() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Referrer url of the highest accessible window.
       * </pre>
       *
       * <code>optional string url = 1;</code>
       * @return The url.
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            url_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Referrer url of the highest accessible window.
       * </pre>
       *
       * <code>optional string url = 1;</code>
       * @return The bytes for url.
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Referrer url of the highest accessible window.
       * </pre>
       *
       * <code>optional string url = 1;</code>
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        url_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Referrer url of the highest accessible window.
       * </pre>
       *
       * <code>optional string url = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        bitField0_ = (bitField0_ & ~0x00000001);
        url_ = getDefaultInstance().getUrl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Referrer url of the highest accessible window.
       * </pre>
       *
       * <code>optional string url = 1;</code>
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        url_ = value;
        onChanged();
        return this;
      }

      private int depth_ ;
      /**
       * <pre>
       * The iframe depth.
       * </pre>
       *
       * <code>optional int32 depth = 2;</code>
       * @return Whether the depth field is set.
       */
      @java.lang.Override
      public boolean hasDepth() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The iframe depth.
       * </pre>
       *
       * <code>optional int32 depth = 2;</code>
       * @return The depth.
       */
      @java.lang.Override
      public int getDepth() {
        return depth_;
      }
      /**
       * <pre>
       * The iframe depth.
       * </pre>
       *
       * <code>optional int32 depth = 2;</code>
       * @param value The depth to set.
       * @return This builder for chaining.
       */
      public Builder setDepth(int value) {
        bitField0_ |= 0x00000002;
        depth_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The iframe depth.
       * </pre>
       *
       * <code>optional int32 depth = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDepth() {
        bitField0_ = (bitField0_ & ~0x00000002);
        depth_ = 0;
        onChanged();
        return this;
      }

      private int w_ ;
      /**
       * <pre>
       * Minimum width of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 w = 3;</code>
       * @return Whether the w field is set.
       */
      @java.lang.Override
      public boolean hasW() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Minimum width of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 w = 3;</code>
       * @return The w.
       */
      @java.lang.Override
      public int getW() {
        return w_;
      }
      /**
       * <pre>
       * Minimum width of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 w = 3;</code>
       * @param value The w to set.
       * @return This builder for chaining.
       */
      public Builder setW(int value) {
        bitField0_ |= 0x00000004;
        w_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Minimum width of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 w = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearW() {
        bitField0_ = (bitField0_ & ~0x00000004);
        w_ = 0;
        onChanged();
        return this;
      }

      private int h_ ;
      /**
       * <pre>
       * Minimum height of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 h = 4;</code>
       * @return Whether the h field is set.
       */
      @java.lang.Override
      public boolean hasH() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Minimum height of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 h = 4;</code>
       * @return The h.
       */
      @java.lang.Override
      public int getH() {
        return h_;
      }
      /**
       * <pre>
       * Minimum height of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 h = 4;</code>
       * @param value The h to set.
       * @return This builder for chaining.
       */
      public Builder setH(int value) {
        bitField0_ |= 0x00000008;
        h_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Minimum height of any iframe traversed between the video player and window.top.
       * </pre>
       *
       * <code>optional uint32 h = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearH() {
        bitField0_ = (bitField0_ & ~0x00000008);
        h_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.Window)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.Window)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.Window DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.Window();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.Window getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Window>
        PARSER = new com.google.protobuf.AbstractParser<Window>() {
      @java.lang.Override
      public Window parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Window(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Window> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Window> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.Window getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BidRequestExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BidRequestExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.BidRequestExt}
   */
  public static final class BidRequestExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BidRequestExt)
      BidRequestExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BidRequestExt.newBuilder() to construct.
    private BidRequestExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BidRequestExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BidRequestExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BidRequestExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BidRequestExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return Whether the zoneId field is set.
       */
      boolean hasZoneId();
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      int getZoneId();

      /**
       * <pre>
       * Blocked advertisers IDs (max 20).
       * </pre>
       *
       * <code>repeated int32 badvid = 2;</code>
       * @return A list containing the badvid.
       */
      java.util.List<java.lang.Integer> getBadvidList();
      /**
       * <pre>
       * Blocked advertisers IDs (max 20).
       * </pre>
       *
       * <code>repeated int32 badvid = 2;</code>
       * @return The count of badvid.
       */
      int getBadvidCount();
      /**
       * <pre>
       * Blocked advertisers IDs (max 20).
       * </pre>
       *
       * <code>repeated int32 badvid = 2;</code>
       * @param index The index of the element to return.
       * @return The badvid at the given index.
       */
      int getBadvid(int index);

      /**
       * <pre>
       * Blocked advertiser industry IDs (max 50).
       * </pre>
       *
       * <code>repeated int32 baindid = 3;</code>
       * @return A list containing the baindid.
       */
      java.util.List<java.lang.Integer> getBaindidList();
      /**
       * <pre>
       * Blocked advertiser industry IDs (max 50).
       * </pre>
       *
       * <code>repeated int32 baindid = 3;</code>
       * @return The count of baindid.
       */
      int getBaindidCount();
      /**
       * <pre>
       * Blocked advertiser industry IDs (max 50).
       * </pre>
       *
       * <code>repeated int32 baindid = 3;</code>
       * @param index The index of the element to return.
       * @return The baindid at the given index.
       */
      int getBaindid(int index);
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BidRequestExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BidRequestExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        badvid_ = emptyIntList();
        baindid_ = emptyIntList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                zoneId_ = input.readInt32();
                break;
              }
              case 16: {
                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                  badvid_ = newIntList();
                  mutable_bitField0_ |= 0x00000002;
                }
                badvid_.addInt(input.readInt32());
                break;
              }
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
                  badvid_ = newIntList();
                  mutable_bitField0_ |= 0x00000002;
                }
                while (input.getBytesUntilLimit() > 0) {
                  badvid_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 24: {
                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                  baindid_ = newIntList();
                  mutable_bitField0_ |= 0x00000004;
                }
                baindid_.addInt(input.readInt32());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) != 0) && input.getBytesUntilLimit() > 0) {
                  baindid_ = newIntList();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  baindid_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) != 0)) {
            badvid_.makeImmutable(); // C
          }
          if (((mutable_bitField0_ & 0x00000004) != 0)) {
            baindid_.makeImmutable(); // C
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int ZONE_ID_FIELD_NUMBER = 1;
      private int zoneId_;
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return Whether the zoneId field is set.
       */
      @java.lang.Override
      public boolean hasZoneId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      @java.lang.Override
      public int getZoneId() {
        return zoneId_;
      }

      public static final int BADVID_FIELD_NUMBER = 2;
      private com.google.protobuf.Internal.IntList badvid_;
      /**
       * <pre>
       * Blocked advertisers IDs (max 20).
       * </pre>
       *
       * <code>repeated int32 badvid = 2;</code>
       * @return A list containing the badvid.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getBadvidList() {
        return badvid_;
      }
      /**
       * <pre>
       * Blocked advertisers IDs (max 20).
       * </pre>
       *
       * <code>repeated int32 badvid = 2;</code>
       * @return The count of badvid.
       */
      public int getBadvidCount() {
        return badvid_.size();
      }
      /**
       * <pre>
       * Blocked advertisers IDs (max 20).
       * </pre>
       *
       * <code>repeated int32 badvid = 2;</code>
       * @param index The index of the element to return.
       * @return The badvid at the given index.
       */
      public int getBadvid(int index) {
        return badvid_.getInt(index);
      }

      public static final int BAINDID_FIELD_NUMBER = 3;
      private com.google.protobuf.Internal.IntList baindid_;
      /**
       * <pre>
       * Blocked advertiser industry IDs (max 50).
       * </pre>
       *
       * <code>repeated int32 baindid = 3;</code>
       * @return A list containing the baindid.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getBaindidList() {
        return baindid_;
      }
      /**
       * <pre>
       * Blocked advertiser industry IDs (max 50).
       * </pre>
       *
       * <code>repeated int32 baindid = 3;</code>
       * @return The count of baindid.
       */
      public int getBaindidCount() {
        return baindid_.size();
      }
      /**
       * <pre>
       * Blocked advertiser industry IDs (max 50).
       * </pre>
       *
       * <code>repeated int32 baindid = 3;</code>
       * @param index The index of the element to return.
       * @return The baindid at the given index.
       */
      public int getBaindid(int index) {
        return baindid_.getInt(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, zoneId_);
        }
        for (int i = 0; i < badvid_.size(); i++) {
          output.writeInt32(2, badvid_.getInt(i));
        }
        for (int i = 0; i < baindid_.size(); i++) {
          output.writeInt32(3, baindid_.getInt(i));
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, zoneId_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < badvid_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(badvid_.getInt(i));
          }
          size += dataSize;
          size += 1 * getBadvidList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < baindid_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(baindid_.getInt(i));
          }
          size += dataSize;
          size += 1 * getBaindidList().size();
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp) obj;

        if (hasZoneId() != other.hasZoneId()) return false;
        if (hasZoneId()) {
          if (getZoneId()
              != other.getZoneId()) return false;
        }
        if (!getBadvidList()
            .equals(other.getBadvidList())) return false;
        if (!getBaindidList()
            .equals(other.getBaindidList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasZoneId()) {
          hash = (37 * hash) + ZONE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getZoneId();
        }
        if (getBadvidCount() > 0) {
          hash = (37 * hash) + BADVID_FIELD_NUMBER;
          hash = (53 * hash) + getBadvidList().hashCode();
        }
        if (getBaindidCount() > 0) {
          hash = (37 * hash) + BAINDID_FIELD_NUMBER;
          hash = (53 * hash) + getBaindidList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.BidRequestExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BidRequestExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          zoneId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          badvid_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          baindid_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.zoneId_ = zoneId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((bitField0_ & 0x00000002) != 0)) {
            badvid_.makeImmutable();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.badvid_ = badvid_;
          if (((bitField0_ & 0x00000004) != 0)) {
            baindid_.makeImmutable();
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.baindid_ = baindid_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.getDefaultInstance()) return this;
          if (other.hasZoneId()) {
            setZoneId(other.getZoneId());
          }
          if (!other.badvid_.isEmpty()) {
            if (badvid_.isEmpty()) {
              badvid_ = other.badvid_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureBadvidIsMutable();
              badvid_.addAll(other.badvid_);
            }
            onChanged();
          }
          if (!other.baindid_.isEmpty()) {
            if (baindid_.isEmpty()) {
              baindid_ = other.baindid_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureBaindidIsMutable();
              baindid_.addAll(other.baindid_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int zoneId_ ;
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @return Whether the zoneId field is set.
         */
        @java.lang.Override
        public boolean hasZoneId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @return The zoneId.
         */
        @java.lang.Override
        public int getZoneId() {
          return zoneId_;
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @param value The zoneId to set.
         * @return This builder for chaining.
         */
        public Builder setZoneId(int value) {
          bitField0_ |= 0x00000001;
          zoneId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearZoneId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          zoneId_ = 0;
          onChanged();
          return this;
        }

        private com.google.protobuf.Internal.IntList badvid_ = emptyIntList();
        private void ensureBadvidIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            badvid_ = mutableCopy(badvid_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <pre>
         * Blocked advertisers IDs (max 20).
         * </pre>
         *
         * <code>repeated int32 badvid = 2;</code>
         * @return A list containing the badvid.
         */
        public java.util.List<java.lang.Integer>
            getBadvidList() {
          return ((bitField0_ & 0x00000002) != 0) ?
                   java.util.Collections.unmodifiableList(badvid_) : badvid_;
        }
        /**
         * <pre>
         * Blocked advertisers IDs (max 20).
         * </pre>
         *
         * <code>repeated int32 badvid = 2;</code>
         * @return The count of badvid.
         */
        public int getBadvidCount() {
          return badvid_.size();
        }
        /**
         * <pre>
         * Blocked advertisers IDs (max 20).
         * </pre>
         *
         * <code>repeated int32 badvid = 2;</code>
         * @param index The index of the element to return.
         * @return The badvid at the given index.
         */
        public int getBadvid(int index) {
          return badvid_.getInt(index);
        }
        /**
         * <pre>
         * Blocked advertisers IDs (max 20).
         * </pre>
         *
         * <code>repeated int32 badvid = 2;</code>
         * @param index The index to set the value at.
         * @param value The badvid to set.
         * @return This builder for chaining.
         */
        public Builder setBadvid(
            int index, int value) {
          ensureBadvidIsMutable();
          badvid_.setInt(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Blocked advertisers IDs (max 20).
         * </pre>
         *
         * <code>repeated int32 badvid = 2;</code>
         * @param value The badvid to add.
         * @return This builder for chaining.
         */
        public Builder addBadvid(int value) {
          ensureBadvidIsMutable();
          badvid_.addInt(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Blocked advertisers IDs (max 20).
         * </pre>
         *
         * <code>repeated int32 badvid = 2;</code>
         * @param values The badvid to add.
         * @return This builder for chaining.
         */
        public Builder addAllBadvid(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureBadvidIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, badvid_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Blocked advertisers IDs (max 20).
         * </pre>
         *
         * <code>repeated int32 badvid = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearBadvid() {
          badvid_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }

        private com.google.protobuf.Internal.IntList baindid_ = emptyIntList();
        private void ensureBaindidIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            baindid_ = mutableCopy(baindid_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <pre>
         * Blocked advertiser industry IDs (max 50).
         * </pre>
         *
         * <code>repeated int32 baindid = 3;</code>
         * @return A list containing the baindid.
         */
        public java.util.List<java.lang.Integer>
            getBaindidList() {
          return ((bitField0_ & 0x00000004) != 0) ?
                   java.util.Collections.unmodifiableList(baindid_) : baindid_;
        }
        /**
         * <pre>
         * Blocked advertiser industry IDs (max 50).
         * </pre>
         *
         * <code>repeated int32 baindid = 3;</code>
         * @return The count of baindid.
         */
        public int getBaindidCount() {
          return baindid_.size();
        }
        /**
         * <pre>
         * Blocked advertiser industry IDs (max 50).
         * </pre>
         *
         * <code>repeated int32 baindid = 3;</code>
         * @param index The index of the element to return.
         * @return The baindid at the given index.
         */
        public int getBaindid(int index) {
          return baindid_.getInt(index);
        }
        /**
         * <pre>
         * Blocked advertiser industry IDs (max 50).
         * </pre>
         *
         * <code>repeated int32 baindid = 3;</code>
         * @param index The index to set the value at.
         * @param value The baindid to set.
         * @return This builder for chaining.
         */
        public Builder setBaindid(
            int index, int value) {
          ensureBaindidIsMutable();
          baindid_.setInt(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Blocked advertiser industry IDs (max 50).
         * </pre>
         *
         * <code>repeated int32 baindid = 3;</code>
         * @param value The baindid to add.
         * @return This builder for chaining.
         */
        public Builder addBaindid(int value) {
          ensureBaindidIsMutable();
          baindid_.addInt(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Blocked advertiser industry IDs (max 50).
         * </pre>
         *
         * <code>repeated int32 baindid = 3;</code>
         * @param values The baindid to add.
         * @return This builder for chaining.
         */
        public Builder addAllBaindid(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureBaindidIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, baindid_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Blocked advertiser industry IDs (max 50).
         * </pre>
         *
         * <code>repeated int32 baindid = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearBaindid() {
          baindid_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BidRequestExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BidRequestExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt other = (com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BidRequestExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BidRequestExt)
        com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidRequestExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt result = new com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidRequestExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BidRequestExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BidRequestExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BidRequestExt>
        PARSER = new com.google.protobuf.AbstractParser<BidRequestExt>() {
      @java.lang.Override
      public BidRequestExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BidRequestExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BidRequestExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BidRequestExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ImpExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.ImpExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.RpOrBuilder getRpOrBuilder();

    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return Whether the window field is set.
     */
    boolean hasWindow();
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return The window.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.Window getWindow();
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder getWindowOrBuilder();

    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @return A list containing the viewabilityvendors.
     */
    java.util.List<java.lang.String>
        getViewabilityvendorsList();
    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @return The count of viewabilityvendors.
     */
    int getViewabilityvendorsCount();
    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @param index The index of the element to return.
     * @return The viewabilityvendors at the given index.
     */
    java.lang.String getViewabilityvendors(int index);
    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the viewabilityvendors at the given index.
     */
    com.google.protobuf.ByteString
        getViewabilityvendorsBytes(int index);

    /**
     * <pre>
     * Global Placement ID. The unique identifier of the placement that is sent 
     * to all participants in buying impressions for this placement. In general, 
     * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
     * or some value provided by the publisher or ad server.
     * </pre>
     *
     * <code>optional string gpid = 4;</code>
     * @return Whether the gpid field is set.
     */
    boolean hasGpid();
    /**
     * <pre>
     * Global Placement ID. The unique identifier of the placement that is sent 
     * to all participants in buying impressions for this placement. In general, 
     * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
     * or some value provided by the publisher or ad server.
     * </pre>
     *
     * <code>optional string gpid = 4;</code>
     * @return The gpid.
     */
    java.lang.String getGpid();
    /**
     * <pre>
     * Global Placement ID. The unique identifier of the placement that is sent 
     * to all participants in buying impressions for this placement. In general, 
     * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
     * or some value provided by the publisher or ad server.
     * </pre>
     *
     * <code>optional string gpid = 4;</code>
     * @return The bytes for gpid.
     */
    com.google.protobuf.ByteString
        getGpidBytes();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.ImpExt}
   */
  public static final class ImpExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.ImpExt)
      ImpExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ImpExt.newBuilder() to construct.
    private ImpExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ImpExt() {
      viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      gpid_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ImpExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ImpExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = window_.toBuilder();
              }
              window_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.Window.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(window_);
                window_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                viewabilityvendors_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              viewabilityvendors_.add(bs);
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              gpid_ = bs;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) != 0)) {
          viewabilityvendors_ = viewabilityvendors_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Builder.class);
    }

    public interface ProxyBidOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.ImpExt.ProxyBid)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return Whether the id field is set.
       */
      boolean hasId();
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The id.
       */
      java.lang.String getId();
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString
          getIdBytes();

      /**
       * <pre>
       * Proxy bid price in CPM (US dollars). All input and output prices are
       * either gross (default) or net of Publisher fees, by prior
       * arrangement with us.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return Whether the price field is set.
       */
      boolean hasPrice();
      /**
       * <pre>
       * Proxy bid price in CPM (US dollars). All input and output prices are
       * either gross (default) or net of Publisher fees, by prior
       * arrangement with us.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return The price.
       */
      double getPrice();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.ProxyBid}
     */
    public static final class ProxyBid extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.ImpExt.ProxyBid)
        ProxyBidOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ProxyBid.newBuilder() to construct.
      private ProxyBid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ProxyBid() {
        id_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ProxyBid();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ProxyBid(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                id_ = bs;
                break;
              }
              case 17: {
                bitField0_ |= 0x00000002;
                price_ = input.readDouble();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder.class);
      }

      private int bitField0_;
      public static final int ID_FIELD_NUMBER = 1;
      private volatile java.lang.Object id_;
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return Whether the id field is set.
       */
      @java.lang.Override
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            id_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PRICE_FIELD_NUMBER = 2;
      private double price_;
      /**
       * <pre>
       * Proxy bid price in CPM (US dollars). All input and output prices are
       * either gross (default) or net of Publisher fees, by prior
       * arrangement with us.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return Whether the price field is set.
       */
      @java.lang.Override
      public boolean hasPrice() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Proxy bid price in CPM (US dollars). All input and output prices are
       * either gross (default) or net of Publisher fees, by prior
       * arrangement with us.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return The price.
       */
      @java.lang.Override
      public double getPrice() {
        return price_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeDouble(2, price_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(2, price_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid other = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid) obj;

        if (hasId() != other.hasId()) return false;
        if (hasId()) {
          if (!getId()
              .equals(other.getId())) return false;
        }
        if (hasPrice() != other.hasPrice()) return false;
        if (hasPrice()) {
          if (java.lang.Double.doubleToLongBits(getPrice())
              != java.lang.Double.doubleToLongBits(
                  other.getPrice())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasId()) {
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId().hashCode();
        }
        if (hasPrice()) {
          hash = (37 * hash) + PRICE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getPrice()));
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.ProxyBid}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.ImpExt.ProxyBid)
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          price_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid build() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid result = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.price_ = price_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.getDefaultInstance()) return this;
          if (other.hasId()) {
            bitField0_ |= 0x00000001;
            id_ = other.id_;
            onChanged();
          }
          if (other.hasPrice()) {
            setPrice(other.getPrice());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object id_ = "";
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return Whether the id field is set.
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return The id.
         */
        public java.lang.String getId() {
          java.lang.Object ref = id_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              id_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return The bytes for id.
         */
        public com.google.protobuf.ByteString
            getIdBytes() {
          java.lang.Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }

        private double price_ ;
        /**
         * <pre>
         * Proxy bid price in CPM (US dollars). All input and output prices are
         * either gross (default) or net of Publisher fees, by prior
         * arrangement with us.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @return Whether the price field is set.
         */
        @java.lang.Override
        public boolean hasPrice() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * Proxy bid price in CPM (US dollars). All input and output prices are
         * either gross (default) or net of Publisher fees, by prior
         * arrangement with us.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @return The price.
         */
        @java.lang.Override
        public double getPrice() {
          return price_;
        }
        /**
         * <pre>
         * Proxy bid price in CPM (US dollars). All input and output prices are
         * either gross (default) or net of Publisher fees, by prior
         * arrangement with us.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @param value The price to set.
         * @return This builder for chaining.
         */
        public Builder setPrice(double value) {
          bitField0_ |= 0x00000002;
          price_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Proxy bid price in CPM (US dollars). All input and output prices are
         * either gross (default) or net of Publisher fees, by prior
         * arrangement with us.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearPrice() {
          bitField0_ = (bitField0_ & ~0x00000002);
          price_ = 0D;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.ImpExt.ProxyBid)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.ImpExt.ProxyBid)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<ProxyBid>
          PARSER = new com.google.protobuf.AbstractParser<ProxyBid>() {
        @java.lang.Override
        public ProxyBid parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new ProxyBid(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<ProxyBid> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<ProxyBid> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface ProxyDemandOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.ImpExt.ProxyDemand)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Expected average market rate CPMs (US dollars) from the primary ad
       * server’s native demand. May be configured to act as a floor price.
       * </pre>
       *
       * <code>optional double marketrate = 1;</code>
       * @return Whether the marketrate field is set.
       */
      boolean hasMarketrate();
      /**
       * <pre>
       * Expected average market rate CPMs (US dollars) from the primary ad
       * server’s native demand. May be configured to act as a floor price.
       * </pre>
       *
       * <code>optional double marketrate = 1;</code>
       * @return The marketrate.
       */
      double getMarketrate();

      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid> 
          getBidsList();
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid getBids(int index);
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      int getBidsCount();
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder> 
          getBidsOrBuilderList();
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder getBidsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.ProxyDemand}
     */
    public static final class ProxyDemand extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.ImpExt.ProxyDemand)
        ProxyDemandOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ProxyDemand.newBuilder() to construct.
      private ProxyDemand(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ProxyDemand() {
        bids_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ProxyDemand();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ProxyDemand(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                bitField0_ |= 0x00000001;
                marketrate_ = input.readDouble();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                  bids_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid>();
                  mutable_bitField0_ |= 0x00000002;
                }
                bids_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.PARSER, extensionRegistry));
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) != 0)) {
            bids_ = java.util.Collections.unmodifiableList(bids_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder.class);
      }

      private int bitField0_;
      public static final int MARKETRATE_FIELD_NUMBER = 1;
      private double marketrate_;
      /**
       * <pre>
       * Expected average market rate CPMs (US dollars) from the primary ad
       * server’s native demand. May be configured to act as a floor price.
       * </pre>
       *
       * <code>optional double marketrate = 1;</code>
       * @return Whether the marketrate field is set.
       */
      @java.lang.Override
      public boolean hasMarketrate() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Expected average market rate CPMs (US dollars) from the primary ad
       * server’s native demand. May be configured to act as a floor price.
       * </pre>
       *
       * <code>optional double marketrate = 1;</code>
       * @return The marketrate.
       */
      @java.lang.Override
      public double getMarketrate() {
        return marketrate_;
      }

      public static final int BIDS_FIELD_NUMBER = 2;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid> bids_;
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid> getBidsList() {
        return bids_;
      }
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder> 
          getBidsOrBuilderList() {
        return bids_;
      }
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      @java.lang.Override
      public int getBidsCount() {
        return bids_.size();
      }
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid getBids(int index) {
        return bids_.get(index);
      }
      /**
       * <pre>
       * The proxy bids object represents a simple id and bid price for any
       * native demand the Ad Server wants to have represented in the
       * auction. These bids will be treated as “house bids” for which no
       * revenue is recorded.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder getBidsOrBuilder(
          int index) {
        return bids_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeDouble(1, marketrate_);
        }
        for (int i = 0; i < bids_.size(); i++) {
          output.writeMessage(2, bids_.get(i));
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(1, marketrate_);
        }
        for (int i = 0; i < bids_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, bids_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand other = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand) obj;

        if (hasMarketrate() != other.hasMarketrate()) return false;
        if (hasMarketrate()) {
          if (java.lang.Double.doubleToLongBits(getMarketrate())
              != java.lang.Double.doubleToLongBits(
                  other.getMarketrate())) return false;
        }
        if (!getBidsList()
            .equals(other.getBidsList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasMarketrate()) {
          hash = (37 * hash) + MARKETRATE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getMarketrate()));
        }
        if (getBidsCount() > 0) {
          hash = (37 * hash) + BIDS_FIELD_NUMBER;
          hash = (53 * hash) + getBidsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.ProxyDemand}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.ImpExt.ProxyDemand)
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemandOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getBidsFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          marketrate_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (bidsBuilder_ == null) {
            bids_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            bidsBuilder_.clear();
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand build() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand result = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.marketrate_ = marketrate_;
            to_bitField0_ |= 0x00000001;
          }
          if (bidsBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)) {
              bids_ = java.util.Collections.unmodifiableList(bids_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.bids_ = bids_;
          } else {
            result.bids_ = bidsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.getDefaultInstance()) return this;
          if (other.hasMarketrate()) {
            setMarketrate(other.getMarketrate());
          }
          if (bidsBuilder_ == null) {
            if (!other.bids_.isEmpty()) {
              if (bids_.isEmpty()) {
                bids_ = other.bids_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureBidsIsMutable();
                bids_.addAll(other.bids_);
              }
              onChanged();
            }
          } else {
            if (!other.bids_.isEmpty()) {
              if (bidsBuilder_.isEmpty()) {
                bidsBuilder_.dispose();
                bidsBuilder_ = null;
                bids_ = other.bids_;
                bitField0_ = (bitField0_ & ~0x00000002);
                bidsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getBidsFieldBuilder() : null;
              } else {
                bidsBuilder_.addAllMessages(other.bids_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private double marketrate_ ;
        /**
         * <pre>
         * Expected average market rate CPMs (US dollars) from the primary ad
         * server’s native demand. May be configured to act as a floor price.
         * </pre>
         *
         * <code>optional double marketrate = 1;</code>
         * @return Whether the marketrate field is set.
         */
        @java.lang.Override
        public boolean hasMarketrate() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Expected average market rate CPMs (US dollars) from the primary ad
         * server’s native demand. May be configured to act as a floor price.
         * </pre>
         *
         * <code>optional double marketrate = 1;</code>
         * @return The marketrate.
         */
        @java.lang.Override
        public double getMarketrate() {
          return marketrate_;
        }
        /**
         * <pre>
         * Expected average market rate CPMs (US dollars) from the primary ad
         * server’s native demand. May be configured to act as a floor price.
         * </pre>
         *
         * <code>optional double marketrate = 1;</code>
         * @param value The marketrate to set.
         * @return This builder for chaining.
         */
        public Builder setMarketrate(double value) {
          bitField0_ |= 0x00000001;
          marketrate_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Expected average market rate CPMs (US dollars) from the primary ad
         * server’s native demand. May be configured to act as a floor price.
         * </pre>
         *
         * <code>optional double marketrate = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearMarketrate() {
          bitField0_ = (bitField0_ & ~0x00000001);
          marketrate_ = 0D;
          onChanged();
          return this;
        }

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid> bids_ =
          java.util.Collections.emptyList();
        private void ensureBidsIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            bids_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid>(bids_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder> bidsBuilder_;

        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid> getBidsList() {
          if (bidsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(bids_);
          } else {
            return bidsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public int getBidsCount() {
          if (bidsBuilder_ == null) {
            return bids_.size();
          } else {
            return bidsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid getBids(int index) {
          if (bidsBuilder_ == null) {
            return bids_.get(index);
          } else {
            return bidsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder setBids(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid value) {
          if (bidsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBidsIsMutable();
            bids_.set(index, value);
            onChanged();
          } else {
            bidsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder setBids(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder builderForValue) {
          if (bidsBuilder_ == null) {
            ensureBidsIsMutable();
            bids_.set(index, builderForValue.build());
            onChanged();
          } else {
            bidsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder addBids(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid value) {
          if (bidsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBidsIsMutable();
            bids_.add(value);
            onChanged();
          } else {
            bidsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder addBids(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid value) {
          if (bidsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBidsIsMutable();
            bids_.add(index, value);
            onChanged();
          } else {
            bidsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder addBids(
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder builderForValue) {
          if (bidsBuilder_ == null) {
            ensureBidsIsMutable();
            bids_.add(builderForValue.build());
            onChanged();
          } else {
            bidsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder addBids(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder builderForValue) {
          if (bidsBuilder_ == null) {
            ensureBidsIsMutable();
            bids_.add(index, builderForValue.build());
            onChanged();
          } else {
            bidsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder addAllBids(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid> values) {
          if (bidsBuilder_ == null) {
            ensureBidsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, bids_);
            onChanged();
          } else {
            bidsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder clearBids() {
          if (bidsBuilder_ == null) {
            bids_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            bidsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public Builder removeBids(int index) {
          if (bidsBuilder_ == null) {
            ensureBidsIsMutable();
            bids_.remove(index);
            onChanged();
          } else {
            bidsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder getBidsBuilder(
            int index) {
          return getBidsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder getBidsOrBuilder(
            int index) {
          if (bidsBuilder_ == null) {
            return bids_.get(index);  } else {
            return bidsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder> 
             getBidsOrBuilderList() {
          if (bidsBuilder_ != null) {
            return bidsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(bids_);
          }
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder addBidsBuilder() {
          return getBidsFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.getDefaultInstance());
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder addBidsBuilder(
            int index) {
          return getBidsFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.getDefaultInstance());
        }
        /**
         * <pre>
         * The proxy bids object represents a simple id and bid price for any
         * native demand the Ad Server wants to have represented in the
         * auction. These bids will be treated as “house bids” for which no
         * revenue is recorded.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.ProxyBid bids = 2;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder> 
             getBidsBuilderList() {
          return getBidsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder> 
            getBidsFieldBuilder() {
          if (bidsBuilder_ == null) {
            bidsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBid.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyBidOrBuilder>(
                    bids_,
                    ((bitField0_ & 0x00000002) != 0),
                    getParentForChildren(),
                    isClean());
            bids_ = null;
          }
          return bidsBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.ImpExt.ProxyDemand)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.ImpExt.ProxyDemand)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<ProxyDemand>
          PARSER = new com.google.protobuf.AbstractParser<ProxyDemand>() {
        @java.lang.Override
        public ProxyDemand parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new ProxyDemand(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<ProxyDemand> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<ProxyDemand> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface FloorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.ImpExt.Floor)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * RTB rule identifier.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return Whether the id field is set.
       */
      boolean hasId();
      /**
       * <pre>
       * RTB rule identifier.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The id.
       */
      java.lang.String getId();
      /**
       * <pre>
       * RTB rule identifier.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString
          getIdBytes();

      /**
       * <pre>
       * RTB rule price floor.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return Whether the price field is set.
       */
      boolean hasPrice();
      /**
       * <pre>
       * RTB rule price floor.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return The price.
       */
      double getPrice();

      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate whether or not Dynamic Price Floors should be active
       * for this floor.
       * </pre>
       *
       * <code>optional bool dpf = 3;</code>
       * @return Whether the dpf field is set.
       */
      boolean hasDpf();
      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate whether or not Dynamic Price Floors should be active
       * for this floor.
       * </pre>
       *
       * <code>optional bool dpf = 3;</code>
       * @return The dpf.
       */
      boolean getDpf();

      /**
       * <pre>
       * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
       * for future use, 3 = Private marketplace, 4 = First Right marketplace.
       * </pre>
       *
       * <code>optional int32 pmptier = 4;</code>
       * @return Whether the pmptier field is set.
       */
      boolean hasPmptier();
      /**
       * <pre>
       * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
       * for future use, 3 = Private marketplace, 4 = First Right marketplace.
       * </pre>
       *
       * <code>optional int32 pmptier = 4;</code>
       * @return The pmptier.
       */
      int getPmptier();

      /**
       * <pre>
       * RTB rule private marketplace (PMP) priority level.
       * </pre>
       *
       * <code>optional int32 pmppriority = 5;</code>
       * @return Whether the pmppriority field is set.
       */
      boolean hasPmppriority();
      /**
       * <pre>
       * RTB rule private marketplace (PMP) priority level.
       * </pre>
       *
       * <code>optional int32 pmppriority = 5;</code>
       * @return The pmppriority.
       */
      int getPmppriority();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.Floor}
     */
    public static final class Floor extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.ImpExt.Floor)
        FloorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Floor.newBuilder() to construct.
      private Floor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Floor() {
        id_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Floor();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Floor(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                id_ = bs;
                break;
              }
              case 17: {
                bitField0_ |= 0x00000002;
                price_ = input.readDouble();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                dpf_ = input.readBool();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                pmptier_ = input.readInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                pmppriority_ = input.readInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Floor_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Floor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder.class);
      }

      private int bitField0_;
      public static final int ID_FIELD_NUMBER = 1;
      private volatile java.lang.Object id_;
      /**
       * <pre>
       * RTB rule identifier.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return Whether the id field is set.
       */
      @java.lang.Override
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * RTB rule identifier.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            id_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * RTB rule identifier.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PRICE_FIELD_NUMBER = 2;
      private double price_;
      /**
       * <pre>
       * RTB rule price floor.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return Whether the price field is set.
       */
      @java.lang.Override
      public boolean hasPrice() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * RTB rule price floor.
       * </pre>
       *
       * <code>optional double price = 2;</code>
       * @return The price.
       */
      @java.lang.Override
      public double getPrice() {
        return price_;
      }

      public static final int DPF_FIELD_NUMBER = 3;
      private boolean dpf_;
      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate whether or not Dynamic Price Floors should be active
       * for this floor.
       * </pre>
       *
       * <code>optional bool dpf = 3;</code>
       * @return Whether the dpf field is set.
       */
      @java.lang.Override
      public boolean hasDpf() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate whether or not Dynamic Price Floors should be active
       * for this floor.
       * </pre>
       *
       * <code>optional bool dpf = 3;</code>
       * @return The dpf.
       */
      @java.lang.Override
      public boolean getDpf() {
        return dpf_;
      }

      public static final int PMPTIER_FIELD_NUMBER = 4;
      private int pmptier_;
      /**
       * <pre>
       * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
       * for future use, 3 = Private marketplace, 4 = First Right marketplace.
       * </pre>
       *
       * <code>optional int32 pmptier = 4;</code>
       * @return Whether the pmptier field is set.
       */
      @java.lang.Override
      public boolean hasPmptier() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
       * for future use, 3 = Private marketplace, 4 = First Right marketplace.
       * </pre>
       *
       * <code>optional int32 pmptier = 4;</code>
       * @return The pmptier.
       */
      @java.lang.Override
      public int getPmptier() {
        return pmptier_;
      }

      public static final int PMPPRIORITY_FIELD_NUMBER = 5;
      private int pmppriority_;
      /**
       * <pre>
       * RTB rule private marketplace (PMP) priority level.
       * </pre>
       *
       * <code>optional int32 pmppriority = 5;</code>
       * @return Whether the pmppriority field is set.
       */
      @java.lang.Override
      public boolean hasPmppriority() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * RTB rule private marketplace (PMP) priority level.
       * </pre>
       *
       * <code>optional int32 pmppriority = 5;</code>
       * @return The pmppriority.
       */
      @java.lang.Override
      public int getPmppriority() {
        return pmppriority_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeDouble(2, price_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeBool(3, dpf_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeInt32(4, pmptier_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeInt32(5, pmppriority_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(2, price_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, dpf_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(4, pmptier_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(5, pmppriority_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor other = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor) obj;

        if (hasId() != other.hasId()) return false;
        if (hasId()) {
          if (!getId()
              .equals(other.getId())) return false;
        }
        if (hasPrice() != other.hasPrice()) return false;
        if (hasPrice()) {
          if (java.lang.Double.doubleToLongBits(getPrice())
              != java.lang.Double.doubleToLongBits(
                  other.getPrice())) return false;
        }
        if (hasDpf() != other.hasDpf()) return false;
        if (hasDpf()) {
          if (getDpf()
              != other.getDpf()) return false;
        }
        if (hasPmptier() != other.hasPmptier()) return false;
        if (hasPmptier()) {
          if (getPmptier()
              != other.getPmptier()) return false;
        }
        if (hasPmppriority() != other.hasPmppriority()) return false;
        if (hasPmppriority()) {
          if (getPmppriority()
              != other.getPmppriority()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasId()) {
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId().hashCode();
        }
        if (hasPrice()) {
          hash = (37 * hash) + PRICE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getPrice()));
        }
        if (hasDpf()) {
          hash = (37 * hash) + DPF_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getDpf());
        }
        if (hasPmptier()) {
          hash = (37 * hash) + PMPTIER_FIELD_NUMBER;
          hash = (53 * hash) + getPmptier();
        }
        if (hasPmppriority()) {
          hash = (37 * hash) + PMPPRIORITY_FIELD_NUMBER;
          hash = (53 * hash) + getPmppriority();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.Floor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.ImpExt.Floor)
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Floor_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Floor_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          price_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000002);
          dpf_ = false;
          bitField0_ = (bitField0_ & ~0x00000004);
          pmptier_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          pmppriority_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Floor_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor build() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor result = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.price_ = price_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.dpf_ = dpf_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.pmptier_ = pmptier_;
            to_bitField0_ |= 0x00000008;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.pmppriority_ = pmppriority_;
            to_bitField0_ |= 0x00000010;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.getDefaultInstance()) return this;
          if (other.hasId()) {
            bitField0_ |= 0x00000001;
            id_ = other.id_;
            onChanged();
          }
          if (other.hasPrice()) {
            setPrice(other.getPrice());
          }
          if (other.hasDpf()) {
            setDpf(other.getDpf());
          }
          if (other.hasPmptier()) {
            setPmptier(other.getPmptier());
          }
          if (other.hasPmppriority()) {
            setPmppriority(other.getPmppriority());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object id_ = "";
        /**
         * <pre>
         * RTB rule identifier.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return Whether the id field is set.
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * RTB rule identifier.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return The id.
         */
        public java.lang.String getId() {
          java.lang.Object ref = id_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              id_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * RTB rule identifier.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return The bytes for id.
         */
        public com.google.protobuf.ByteString
            getIdBytes() {
          java.lang.Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * RTB rule identifier.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * RTB rule identifier.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * RTB rule identifier.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }

        private double price_ ;
        /**
         * <pre>
         * RTB rule price floor.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @return Whether the price field is set.
         */
        @java.lang.Override
        public boolean hasPrice() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * RTB rule price floor.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @return The price.
         */
        @java.lang.Override
        public double getPrice() {
          return price_;
        }
        /**
         * <pre>
         * RTB rule price floor.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @param value The price to set.
         * @return This builder for chaining.
         */
        public Builder setPrice(double value) {
          bitField0_ |= 0x00000002;
          price_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * RTB rule price floor.
         * </pre>
         *
         * <code>optional double price = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearPrice() {
          bitField0_ = (bitField0_ & ~0x00000002);
          price_ = 0D;
          onChanged();
          return this;
        }

        private boolean dpf_ ;
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate whether or not Dynamic Price Floors should be active
         * for this floor.
         * </pre>
         *
         * <code>optional bool dpf = 3;</code>
         * @return Whether the dpf field is set.
         */
        @java.lang.Override
        public boolean hasDpf() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate whether or not Dynamic Price Floors should be active
         * for this floor.
         * </pre>
         *
         * <code>optional bool dpf = 3;</code>
         * @return The dpf.
         */
        @java.lang.Override
        public boolean getDpf() {
          return dpf_;
        }
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate whether or not Dynamic Price Floors should be active
         * for this floor.
         * </pre>
         *
         * <code>optional bool dpf = 3;</code>
         * @param value The dpf to set.
         * @return This builder for chaining.
         */
        public Builder setDpf(boolean value) {
          bitField0_ |= 0x00000004;
          dpf_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate whether or not Dynamic Price Floors should be active
         * for this floor.
         * </pre>
         *
         * <code>optional bool dpf = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearDpf() {
          bitField0_ = (bitField0_ & ~0x00000004);
          dpf_ = false;
          onChanged();
          return this;
        }

        private int pmptier_ ;
        /**
         * <pre>
         * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
         * for future use, 3 = Private marketplace, 4 = First Right marketplace.
         * </pre>
         *
         * <code>optional int32 pmptier = 4;</code>
         * @return Whether the pmptier field is set.
         */
        @java.lang.Override
        public boolean hasPmptier() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
         * for future use, 3 = Private marketplace, 4 = First Right marketplace.
         * </pre>
         *
         * <code>optional int32 pmptier = 4;</code>
         * @return The pmptier.
         */
        @java.lang.Override
        public int getPmptier() {
          return pmptier_;
        }
        /**
         * <pre>
         * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
         * for future use, 3 = Private marketplace, 4 = First Right marketplace.
         * </pre>
         *
         * <code>optional int32 pmptier = 4;</code>
         * @param value The pmptier to set.
         * @return This builder for chaining.
         */
        public Builder setPmptier(int value) {
          bitField0_ |= 0x00000008;
          pmptier_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
         * for future use, 3 = Private marketplace, 4 = First Right marketplace.
         * </pre>
         *
         * <code>optional int32 pmptier = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearPmptier() {
          bitField0_ = (bitField0_ & ~0x00000008);
          pmptier_ = 0;
          onChanged();
          return this;
        }

        private int pmppriority_ ;
        /**
         * <pre>
         * RTB rule private marketplace (PMP) priority level.
         * </pre>
         *
         * <code>optional int32 pmppriority = 5;</code>
         * @return Whether the pmppriority field is set.
         */
        @java.lang.Override
        public boolean hasPmppriority() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <pre>
         * RTB rule private marketplace (PMP) priority level.
         * </pre>
         *
         * <code>optional int32 pmppriority = 5;</code>
         * @return The pmppriority.
         */
        @java.lang.Override
        public int getPmppriority() {
          return pmppriority_;
        }
        /**
         * <pre>
         * RTB rule private marketplace (PMP) priority level.
         * </pre>
         *
         * <code>optional int32 pmppriority = 5;</code>
         * @param value The pmppriority to set.
         * @return This builder for chaining.
         */
        public Builder setPmppriority(int value) {
          bitField0_ |= 0x00000010;
          pmppriority_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * RTB rule private marketplace (PMP) priority level.
         * </pre>
         *
         * <code>optional int32 pmppriority = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearPmppriority() {
          bitField0_ = (bitField0_ & ~0x00000010);
          pmppriority_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.ImpExt.Floor)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.ImpExt.Floor)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Floor>
          PARSER = new com.google.protobuf.AbstractParser<Floor>() {
        @java.lang.Override
        public Floor parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Floor(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Floor> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Floor> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.ImpExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return Whether the zoneId field is set.
       */
      boolean hasZoneId();
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      int getZoneId();

      /**
       * <pre>
       * Set to “url” to URL encode ad.
       * </pre>
       *
       * <code>optional string enc = 2;</code>
       * @return Whether the enc field is set.
       */
      boolean hasEnc();
      /**
       * <pre>
       * Set to “url” to URL encode ad.
       * </pre>
       *
       * <code>optional string enc = 2;</code>
       * @return The enc.
       */
      java.lang.String getEnc();
      /**
       * <pre>
       * Set to “url” to URL encode ad.
       * </pre>
       *
       * <code>optional string enc = 2;</code>
       * @return The bytes for enc.
       */
      com.google.protobuf.ByteString
          getEncBytes();

      /**
       * <pre>
       * The caller may configure slots in our system, and associate them with
       * multiple size IDs. Rather than specify the size ID(s) at request time,
       * another option is to specify the slot name here, thus allowing the set
       * of sizes to be varied outside of code.
       * </pre>
       *
       * <code>optional string slot = 3;</code>
       * @return Whether the slot field is set.
       */
      boolean hasSlot();
      /**
       * <pre>
       * The caller may configure slots in our system, and associate them with
       * multiple size IDs. Rather than specify the size ID(s) at request time,
       * another option is to specify the slot name here, thus allowing the set
       * of sizes to be varied outside of code.
       * </pre>
       *
       * <code>optional string slot = 3;</code>
       * @return The slot.
       */
      java.lang.String getSlot();
      /**
       * <pre>
       * The caller may configure slots in our system, and associate them with
       * multiple size IDs. Rather than specify the size ID(s) at request time,
       * another option is to specify the slot name here, thus allowing the set
       * of sizes to be varied outside of code.
       * </pre>
       *
       * <code>optional string slot = 3;</code>
       * @return The bytes for slot.
       */
      com.google.protobuf.ByteString
          getSlotBytes();

      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> 
          getTargetList();
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTarget(int index);
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      int getTargetCount();
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTargetOrBuilderList();
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetOrBuilder(
          int index);

      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> 
          getTrackList();
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTrack(int index);
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      int getTrackCount();
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTrackOrBuilderList();
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTrackOrBuilder(
          int index);

      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> 
          getRtbList();
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getRtb(int index);
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      int getRtbCount();
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getRtbOrBuilderList();
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getRtbOrBuilder(
          int index);

      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> 
          getNologList();
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getNolog(int index);
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      int getNologCount();
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getNologOrBuilderList();
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getNologOrBuilder(
          int index);

      /**
       * <pre>
       * The proxy demand object contains a parent object for usage where the
       * primary ad server wants to represent native demand in the auction.
       * These bids will be treated as “house bids” for which no revenue is
       * recorded.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
       * @return Whether the proxydemand field is set.
       */
      boolean hasProxydemand();
      /**
       * <pre>
       * The proxy demand object contains a parent object for usage where the
       * primary ad server wants to represent native demand in the auction.
       * These bids will be treated as “house bids” for which no revenue is
       * recorded.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
       * @return The proxydemand.
       */
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand getProxydemand();
      /**
       * <pre>
       * The proxy demand object contains a parent object for usage where the
       * primary ad server wants to represent native demand in the auction.
       * These bids will be treated as “house bids” for which no revenue is
       * recorded.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemandOrBuilder getProxydemandOrBuilder();

      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor> 
          getFloorsList();
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor getFloors(int index);
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      int getFloorsCount();
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder> 
          getFloorsOrBuilderList();
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder getFloorsOrBuilder(
          int index);

      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 10;</code>
       * @return Whether the gpid field is set.
       */
      boolean hasGpid();
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 10;</code>
       * @return The gpid.
       */
      java.lang.String getGpid();
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 10;</code>
       * @return The bytes for gpid.
       */
      com.google.protobuf.ByteString
          getGpidBytes();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.ImpExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        enc_ = "";
        slot_ = "";
        target_ = java.util.Collections.emptyList();
        track_ = java.util.Collections.emptyList();
        rtb_ = java.util.Collections.emptyList();
        nolog_ = java.util.Collections.emptyList();
        floors_ = java.util.Collections.emptyList();
        gpid_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                zoneId_ = input.readInt32();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                enc_ = bs;
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                slot_ = bs;
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000008) != 0)) {
                  target_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>();
                  mutable_bitField0_ |= 0x00000008;
                }
                target_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.PARSER, extensionRegistry));
                break;
              }
              case 42: {
                if (!((mutable_bitField0_ & 0x00000010) != 0)) {
                  track_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>();
                  mutable_bitField0_ |= 0x00000010;
                }
                track_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.PARSER, extensionRegistry));
                break;
              }
              case 50: {
                if (!((mutable_bitField0_ & 0x00000020) != 0)) {
                  rtb_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>();
                  mutable_bitField0_ |= 0x00000020;
                }
                rtb_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.PARSER, extensionRegistry));
                break;
              }
              case 58: {
                if (!((mutable_bitField0_ & 0x00000040) != 0)) {
                  nolog_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>();
                  mutable_bitField0_ |= 0x00000040;
                }
                nolog_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.PARSER, extensionRegistry));
                break;
              }
              case 66: {
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) != 0)) {
                  subBuilder = proxydemand_.toBuilder();
                }
                proxydemand_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(proxydemand_);
                  proxydemand_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
              case 74: {
                if (!((mutable_bitField0_ & 0x00000100) != 0)) {
                  floors_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor>();
                  mutable_bitField0_ |= 0x00000100;
                }
                floors_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.PARSER, extensionRegistry));
                break;
              }
              case 82: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000010;
                gpid_ = bs;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000008) != 0)) {
            target_ = java.util.Collections.unmodifiableList(target_);
          }
          if (((mutable_bitField0_ & 0x00000010) != 0)) {
            track_ = java.util.Collections.unmodifiableList(track_);
          }
          if (((mutable_bitField0_ & 0x00000020) != 0)) {
            rtb_ = java.util.Collections.unmodifiableList(rtb_);
          }
          if (((mutable_bitField0_ & 0x00000040) != 0)) {
            nolog_ = java.util.Collections.unmodifiableList(nolog_);
          }
          if (((mutable_bitField0_ & 0x00000100) != 0)) {
            floors_ = java.util.Collections.unmodifiableList(floors_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int ZONE_ID_FIELD_NUMBER = 1;
      private int zoneId_;
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return Whether the zoneId field is set.
       */
      @java.lang.Override
      public boolean hasZoneId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * ID for the bid object chosen by the ad server for tracking and
       * debugging purposes.
       * </pre>
       *
       * <code>optional int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      @java.lang.Override
      public int getZoneId() {
        return zoneId_;
      }

      public static final int ENC_FIELD_NUMBER = 2;
      private volatile java.lang.Object enc_;
      /**
       * <pre>
       * Set to “url” to URL encode ad.
       * </pre>
       *
       * <code>optional string enc = 2;</code>
       * @return Whether the enc field is set.
       */
      @java.lang.Override
      public boolean hasEnc() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Set to “url” to URL encode ad.
       * </pre>
       *
       * <code>optional string enc = 2;</code>
       * @return The enc.
       */
      @java.lang.Override
      public java.lang.String getEnc() {
        java.lang.Object ref = enc_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            enc_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * Set to “url” to URL encode ad.
       * </pre>
       *
       * <code>optional string enc = 2;</code>
       * @return The bytes for enc.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getEncBytes() {
        java.lang.Object ref = enc_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          enc_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SLOT_FIELD_NUMBER = 3;
      private volatile java.lang.Object slot_;
      /**
       * <pre>
       * The caller may configure slots in our system, and associate them with
       * multiple size IDs. Rather than specify the size ID(s) at request time,
       * another option is to specify the slot name here, thus allowing the set
       * of sizes to be varied outside of code.
       * </pre>
       *
       * <code>optional string slot = 3;</code>
       * @return Whether the slot field is set.
       */
      @java.lang.Override
      public boolean hasSlot() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The caller may configure slots in our system, and associate them with
       * multiple size IDs. Rather than specify the size ID(s) at request time,
       * another option is to specify the slot name here, thus allowing the set
       * of sizes to be varied outside of code.
       * </pre>
       *
       * <code>optional string slot = 3;</code>
       * @return The slot.
       */
      @java.lang.Override
      public java.lang.String getSlot() {
        java.lang.Object ref = slot_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            slot_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * The caller may configure slots in our system, and associate them with
       * multiple size IDs. Rather than specify the size ID(s) at request time,
       * another option is to specify the slot name here, thus allowing the set
       * of sizes to be varied outside of code.
       * </pre>
       *
       * <code>optional string slot = 3;</code>
       * @return The bytes for slot.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSlotBytes() {
        java.lang.Object ref = slot_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          slot_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TARGET_FIELD_NUMBER = 4;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> target_;
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTargetList() {
        return target_;
      }
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTargetOrBuilderList() {
        return target_;
      }
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      @java.lang.Override
      public int getTargetCount() {
        return target_.size();
      }
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTarget(int index) {
        return target_.get(index);
      }
      /**
       * <pre>
       * Inventory-specific targeting. The target object contains an
       * arbitrary set of keys with values comprising of arrays of strings
       * used for Deals (Private Marketplace) targeting, utilized to target
       * first party inventory data. First party inventory data consists of
       * data about the inventory (i.e. category of page, price of item,
       * etc.).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetOrBuilder(
          int index) {
        return target_.get(index);
      }

      public static final int TRACK_FIELD_NUMBER = 5;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> track_;
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTrackList() {
        return track_;
      }
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTrackOrBuilderList() {
        return track_;
      }
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      @java.lang.Override
      public int getTrackCount() {
        return track_.size();
      }
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTrack(int index) {
        return track_.get(index);
      }
      /**
       * <pre>
       * Inventory-specific tracking/reporting.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTrackOrBuilder(
          int index) {
        return track_.get(index);
      }

      public static final int RTB_FIELD_NUMBER = 6;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> rtb_;
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getRtbList() {
        return rtb_;
      }
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getRtbOrBuilderList() {
        return rtb_;
      }
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      @java.lang.Override
      public int getRtbCount() {
        return rtb_.size();
      }
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getRtb(int index) {
        return rtb_.get(index);
      }
      /**
       * <pre>
       * Optional parameters that will be passed to DSPs, and logged by Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getRtbOrBuilder(
          int index) {
        return rtb_.get(index);
      }

      public static final int NOLOG_FIELD_NUMBER = 7;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> nolog_;
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getNologList() {
        return nolog_;
      }
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getNologOrBuilderList() {
        return nolog_;
      }
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      @java.lang.Override
      public int getNologCount() {
        return nolog_.size();
      }
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getNolog(int index) {
        return nolog_.get(index);
      }
      /**
       * <pre>
       * Optional parameters that will passed to DSPs, though not logged within Magnite.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getNologOrBuilder(
          int index) {
        return nolog_.get(index);
      }

      public static final int PROXYDEMAND_FIELD_NUMBER = 8;
      private com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand proxydemand_;
      /**
       * <pre>
       * The proxy demand object contains a parent object for usage where the
       * primary ad server wants to represent native demand in the auction.
       * These bids will be treated as “house bids” for which no revenue is
       * recorded.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
       * @return Whether the proxydemand field is set.
       */
      @java.lang.Override
      public boolean hasProxydemand() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The proxy demand object contains a parent object for usage where the
       * primary ad server wants to represent native demand in the auction.
       * These bids will be treated as “house bids” for which no revenue is
       * recorded.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
       * @return The proxydemand.
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand getProxydemand() {
        return proxydemand_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.getDefaultInstance() : proxydemand_;
      }
      /**
       * <pre>
       * The proxy demand object contains a parent object for usage where the
       * primary ad server wants to represent native demand in the auction.
       * These bids will be treated as “house bids” for which no revenue is
       * recorded.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemandOrBuilder getProxydemandOrBuilder() {
        return proxydemand_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.getDefaultInstance() : proxydemand_;
      }

      public static final int FLOORS_FIELD_NUMBER = 9;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor> floors_;
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor> getFloorsList() {
        return floors_;
      }
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder> 
          getFloorsOrBuilderList() {
        return floors_;
      }
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      @java.lang.Override
      public int getFloorsCount() {
        return floors_.size();
      }
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor getFloors(int index) {
        return floors_.get(index);
      }
      /**
       * <pre>
       * Floor data used to synthesize RTB rules.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder getFloorsOrBuilder(
          int index) {
        return floors_.get(index);
      }

      public static final int GPID_FIELD_NUMBER = 10;
      private volatile java.lang.Object gpid_;
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 10;</code>
       * @return Whether the gpid field is set.
       */
      @java.lang.Override
      public boolean hasGpid() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 10;</code>
       * @return The gpid.
       */
      @java.lang.Override
      public java.lang.String getGpid() {
        java.lang.Object ref = gpid_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            gpid_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 10;</code>
       * @return The bytes for gpid.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGpidBytes() {
        java.lang.Object ref = gpid_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gpid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, zoneId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, enc_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, slot_);
        }
        for (int i = 0; i < target_.size(); i++) {
          output.writeMessage(4, target_.get(i));
        }
        for (int i = 0; i < track_.size(); i++) {
          output.writeMessage(5, track_.get(i));
        }
        for (int i = 0; i < rtb_.size(); i++) {
          output.writeMessage(6, rtb_.get(i));
        }
        for (int i = 0; i < nolog_.size(); i++) {
          output.writeMessage(7, nolog_.get(i));
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeMessage(8, getProxydemand());
        }
        for (int i = 0; i < floors_.size(); i++) {
          output.writeMessage(9, floors_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 10, gpid_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, zoneId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, enc_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, slot_);
        }
        for (int i = 0; i < target_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, target_.get(i));
        }
        for (int i = 0; i < track_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, track_.get(i));
        }
        for (int i = 0; i < rtb_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, rtb_.get(i));
        }
        for (int i = 0; i < nolog_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, nolog_.get(i));
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, getProxydemand());
        }
        for (int i = 0; i < floors_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, floors_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, gpid_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp) obj;

        if (hasZoneId() != other.hasZoneId()) return false;
        if (hasZoneId()) {
          if (getZoneId()
              != other.getZoneId()) return false;
        }
        if (hasEnc() != other.hasEnc()) return false;
        if (hasEnc()) {
          if (!getEnc()
              .equals(other.getEnc())) return false;
        }
        if (hasSlot() != other.hasSlot()) return false;
        if (hasSlot()) {
          if (!getSlot()
              .equals(other.getSlot())) return false;
        }
        if (!getTargetList()
            .equals(other.getTargetList())) return false;
        if (!getTrackList()
            .equals(other.getTrackList())) return false;
        if (!getRtbList()
            .equals(other.getRtbList())) return false;
        if (!getNologList()
            .equals(other.getNologList())) return false;
        if (hasProxydemand() != other.hasProxydemand()) return false;
        if (hasProxydemand()) {
          if (!getProxydemand()
              .equals(other.getProxydemand())) return false;
        }
        if (!getFloorsList()
            .equals(other.getFloorsList())) return false;
        if (hasGpid() != other.hasGpid()) return false;
        if (hasGpid()) {
          if (!getGpid()
              .equals(other.getGpid())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasZoneId()) {
          hash = (37 * hash) + ZONE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getZoneId();
        }
        if (hasEnc()) {
          hash = (37 * hash) + ENC_FIELD_NUMBER;
          hash = (53 * hash) + getEnc().hashCode();
        }
        if (hasSlot()) {
          hash = (37 * hash) + SLOT_FIELD_NUMBER;
          hash = (53 * hash) + getSlot().hashCode();
        }
        if (getTargetCount() > 0) {
          hash = (37 * hash) + TARGET_FIELD_NUMBER;
          hash = (53 * hash) + getTargetList().hashCode();
        }
        if (getTrackCount() > 0) {
          hash = (37 * hash) + TRACK_FIELD_NUMBER;
          hash = (53 * hash) + getTrackList().hashCode();
        }
        if (getRtbCount() > 0) {
          hash = (37 * hash) + RTB_FIELD_NUMBER;
          hash = (53 * hash) + getRtbList().hashCode();
        }
        if (getNologCount() > 0) {
          hash = (37 * hash) + NOLOG_FIELD_NUMBER;
          hash = (53 * hash) + getNologList().hashCode();
        }
        if (hasProxydemand()) {
          hash = (37 * hash) + PROXYDEMAND_FIELD_NUMBER;
          hash = (53 * hash) + getProxydemand().hashCode();
        }
        if (getFloorsCount() > 0) {
          hash = (37 * hash) + FLOORS_FIELD_NUMBER;
          hash = (53 * hash) + getFloorsList().hashCode();
        }
        if (hasGpid()) {
          hash = (37 * hash) + GPID_FIELD_NUMBER;
          hash = (53 * hash) + getGpid().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.ImpExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.ImpExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getTargetFieldBuilder();
            getTrackFieldBuilder();
            getRtbFieldBuilder();
            getNologFieldBuilder();
            getProxydemandFieldBuilder();
            getFloorsFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          zoneId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          enc_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          slot_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          if (targetBuilder_ == null) {
            target_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            targetBuilder_.clear();
          }
          if (trackBuilder_ == null) {
            track_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            trackBuilder_.clear();
          }
          if (rtbBuilder_ == null) {
            rtb_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            rtbBuilder_.clear();
          }
          if (nologBuilder_ == null) {
            nolog_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            nologBuilder_.clear();
          }
          if (proxydemandBuilder_ == null) {
            proxydemand_ = null;
          } else {
            proxydemandBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          if (floorsBuilder_ == null) {
            floors_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            floorsBuilder_.clear();
          }
          gpid_ = "";
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.zoneId_ = zoneId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.enc_ = enc_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.slot_ = slot_;
          if (targetBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0)) {
              target_ = java.util.Collections.unmodifiableList(target_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.target_ = target_;
          } else {
            result.target_ = targetBuilder_.build();
          }
          if (trackBuilder_ == null) {
            if (((bitField0_ & 0x00000010) != 0)) {
              track_ = java.util.Collections.unmodifiableList(track_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.track_ = track_;
          } else {
            result.track_ = trackBuilder_.build();
          }
          if (rtbBuilder_ == null) {
            if (((bitField0_ & 0x00000020) != 0)) {
              rtb_ = java.util.Collections.unmodifiableList(rtb_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.rtb_ = rtb_;
          } else {
            result.rtb_ = rtbBuilder_.build();
          }
          if (nologBuilder_ == null) {
            if (((bitField0_ & 0x00000040) != 0)) {
              nolog_ = java.util.Collections.unmodifiableList(nolog_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.nolog_ = nolog_;
          } else {
            result.nolog_ = nologBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000080) != 0)) {
            if (proxydemandBuilder_ == null) {
              result.proxydemand_ = proxydemand_;
            } else {
              result.proxydemand_ = proxydemandBuilder_.build();
            }
            to_bitField0_ |= 0x00000008;
          }
          if (floorsBuilder_ == null) {
            if (((bitField0_ & 0x00000100) != 0)) {
              floors_ = java.util.Collections.unmodifiableList(floors_);
              bitField0_ = (bitField0_ & ~0x00000100);
            }
            result.floors_ = floors_;
          } else {
            result.floors_ = floorsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000200) != 0)) {
            to_bitField0_ |= 0x00000010;
          }
          result.gpid_ = gpid_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.getDefaultInstance()) return this;
          if (other.hasZoneId()) {
            setZoneId(other.getZoneId());
          }
          if (other.hasEnc()) {
            bitField0_ |= 0x00000002;
            enc_ = other.enc_;
            onChanged();
          }
          if (other.hasSlot()) {
            bitField0_ |= 0x00000004;
            slot_ = other.slot_;
            onChanged();
          }
          if (targetBuilder_ == null) {
            if (!other.target_.isEmpty()) {
              if (target_.isEmpty()) {
                target_ = other.target_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureTargetIsMutable();
                target_.addAll(other.target_);
              }
              onChanged();
            }
          } else {
            if (!other.target_.isEmpty()) {
              if (targetBuilder_.isEmpty()) {
                targetBuilder_.dispose();
                targetBuilder_ = null;
                target_ = other.target_;
                bitField0_ = (bitField0_ & ~0x00000008);
                targetBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getTargetFieldBuilder() : null;
              } else {
                targetBuilder_.addAllMessages(other.target_);
              }
            }
          }
          if (trackBuilder_ == null) {
            if (!other.track_.isEmpty()) {
              if (track_.isEmpty()) {
                track_ = other.track_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureTrackIsMutable();
                track_.addAll(other.track_);
              }
              onChanged();
            }
          } else {
            if (!other.track_.isEmpty()) {
              if (trackBuilder_.isEmpty()) {
                trackBuilder_.dispose();
                trackBuilder_ = null;
                track_ = other.track_;
                bitField0_ = (bitField0_ & ~0x00000010);
                trackBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getTrackFieldBuilder() : null;
              } else {
                trackBuilder_.addAllMessages(other.track_);
              }
            }
          }
          if (rtbBuilder_ == null) {
            if (!other.rtb_.isEmpty()) {
              if (rtb_.isEmpty()) {
                rtb_ = other.rtb_;
                bitField0_ = (bitField0_ & ~0x00000020);
              } else {
                ensureRtbIsMutable();
                rtb_.addAll(other.rtb_);
              }
              onChanged();
            }
          } else {
            if (!other.rtb_.isEmpty()) {
              if (rtbBuilder_.isEmpty()) {
                rtbBuilder_.dispose();
                rtbBuilder_ = null;
                rtb_ = other.rtb_;
                bitField0_ = (bitField0_ & ~0x00000020);
                rtbBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getRtbFieldBuilder() : null;
              } else {
                rtbBuilder_.addAllMessages(other.rtb_);
              }
            }
          }
          if (nologBuilder_ == null) {
            if (!other.nolog_.isEmpty()) {
              if (nolog_.isEmpty()) {
                nolog_ = other.nolog_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureNologIsMutable();
                nolog_.addAll(other.nolog_);
              }
              onChanged();
            }
          } else {
            if (!other.nolog_.isEmpty()) {
              if (nologBuilder_.isEmpty()) {
                nologBuilder_.dispose();
                nologBuilder_ = null;
                nolog_ = other.nolog_;
                bitField0_ = (bitField0_ & ~0x00000040);
                nologBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getNologFieldBuilder() : null;
              } else {
                nologBuilder_.addAllMessages(other.nolog_);
              }
            }
          }
          if (other.hasProxydemand()) {
            mergeProxydemand(other.getProxydemand());
          }
          if (floorsBuilder_ == null) {
            if (!other.floors_.isEmpty()) {
              if (floors_.isEmpty()) {
                floors_ = other.floors_;
                bitField0_ = (bitField0_ & ~0x00000100);
              } else {
                ensureFloorsIsMutable();
                floors_.addAll(other.floors_);
              }
              onChanged();
            }
          } else {
            if (!other.floors_.isEmpty()) {
              if (floorsBuilder_.isEmpty()) {
                floorsBuilder_.dispose();
                floorsBuilder_ = null;
                floors_ = other.floors_;
                bitField0_ = (bitField0_ & ~0x00000100);
                floorsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getFloorsFieldBuilder() : null;
              } else {
                floorsBuilder_.addAllMessages(other.floors_);
              }
            }
          }
          if (other.hasGpid()) {
            bitField0_ |= 0x00000200;
            gpid_ = other.gpid_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int zoneId_ ;
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @return Whether the zoneId field is set.
         */
        @java.lang.Override
        public boolean hasZoneId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @return The zoneId.
         */
        @java.lang.Override
        public int getZoneId() {
          return zoneId_;
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @param value The zoneId to set.
         * @return This builder for chaining.
         */
        public Builder setZoneId(int value) {
          bitField0_ |= 0x00000001;
          zoneId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * ID for the bid object chosen by the ad server for tracking and
         * debugging purposes.
         * </pre>
         *
         * <code>optional int32 zone_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearZoneId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          zoneId_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object enc_ = "";
        /**
         * <pre>
         * Set to “url” to URL encode ad.
         * </pre>
         *
         * <code>optional string enc = 2;</code>
         * @return Whether the enc field is set.
         */
        public boolean hasEnc() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * Set to “url” to URL encode ad.
         * </pre>
         *
         * <code>optional string enc = 2;</code>
         * @return The enc.
         */
        public java.lang.String getEnc() {
          java.lang.Object ref = enc_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              enc_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Set to “url” to URL encode ad.
         * </pre>
         *
         * <code>optional string enc = 2;</code>
         * @return The bytes for enc.
         */
        public com.google.protobuf.ByteString
            getEncBytes() {
          java.lang.Object ref = enc_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            enc_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Set to “url” to URL encode ad.
         * </pre>
         *
         * <code>optional string enc = 2;</code>
         * @param value The enc to set.
         * @return This builder for chaining.
         */
        public Builder setEnc(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          enc_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Set to “url” to URL encode ad.
         * </pre>
         *
         * <code>optional string enc = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearEnc() {
          bitField0_ = (bitField0_ & ~0x00000002);
          enc_ = getDefaultInstance().getEnc();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Set to “url” to URL encode ad.
         * </pre>
         *
         * <code>optional string enc = 2;</code>
         * @param value The bytes for enc to set.
         * @return This builder for chaining.
         */
        public Builder setEncBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          enc_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object slot_ = "";
        /**
         * <pre>
         * The caller may configure slots in our system, and associate them with
         * multiple size IDs. Rather than specify the size ID(s) at request time,
         * another option is to specify the slot name here, thus allowing the set
         * of sizes to be varied outside of code.
         * </pre>
         *
         * <code>optional string slot = 3;</code>
         * @return Whether the slot field is set.
         */
        public boolean hasSlot() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * The caller may configure slots in our system, and associate them with
         * multiple size IDs. Rather than specify the size ID(s) at request time,
         * another option is to specify the slot name here, thus allowing the set
         * of sizes to be varied outside of code.
         * </pre>
         *
         * <code>optional string slot = 3;</code>
         * @return The slot.
         */
        public java.lang.String getSlot() {
          java.lang.Object ref = slot_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              slot_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The caller may configure slots in our system, and associate them with
         * multiple size IDs. Rather than specify the size ID(s) at request time,
         * another option is to specify the slot name here, thus allowing the set
         * of sizes to be varied outside of code.
         * </pre>
         *
         * <code>optional string slot = 3;</code>
         * @return The bytes for slot.
         */
        public com.google.protobuf.ByteString
            getSlotBytes() {
          java.lang.Object ref = slot_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            slot_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The caller may configure slots in our system, and associate them with
         * multiple size IDs. Rather than specify the size ID(s) at request time,
         * another option is to specify the slot name here, thus allowing the set
         * of sizes to be varied outside of code.
         * </pre>
         *
         * <code>optional string slot = 3;</code>
         * @param value The slot to set.
         * @return This builder for chaining.
         */
        public Builder setSlot(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          slot_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The caller may configure slots in our system, and associate them with
         * multiple size IDs. Rather than specify the size ID(s) at request time,
         * another option is to specify the slot name here, thus allowing the set
         * of sizes to be varied outside of code.
         * </pre>
         *
         * <code>optional string slot = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearSlot() {
          bitField0_ = (bitField0_ & ~0x00000004);
          slot_ = getDefaultInstance().getSlot();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The caller may configure slots in our system, and associate them with
         * multiple size IDs. Rather than specify the size ID(s) at request time,
         * another option is to specify the slot name here, thus allowing the set
         * of sizes to be varied outside of code.
         * </pre>
         *
         * <code>optional string slot = 3;</code>
         * @param value The bytes for slot to set.
         * @return This builder for chaining.
         */
        public Builder setSlotBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          slot_ = value;
          onChanged();
          return this;
        }

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> target_ =
          java.util.Collections.emptyList();
        private void ensureTargetIsMutable() {
          if (!((bitField0_ & 0x00000008) != 0)) {
            target_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>(target_);
            bitField0_ |= 0x00000008;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> targetBuilder_;

        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTargetList() {
          if (targetBuilder_ == null) {
            return java.util.Collections.unmodifiableList(target_);
          } else {
            return targetBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public int getTargetCount() {
          if (targetBuilder_ == null) {
            return target_.size();
          } else {
            return targetBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTarget(int index) {
          if (targetBuilder_ == null) {
            return target_.get(index);
          } else {
            return targetBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder setTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetIsMutable();
            target_.set(index, value);
            onChanged();
          } else {
            targetBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder setTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.set(index, builderForValue.build());
            onChanged();
          } else {
            targetBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder addTarget(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetIsMutable();
            target_.add(value);
            onChanged();
          } else {
            targetBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder addTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetIsMutable();
            target_.add(index, value);
            onChanged();
          } else {
            targetBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder addTarget(
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.add(builderForValue.build());
            onChanged();
          } else {
            targetBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder addTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.add(index, builderForValue.build());
            onChanged();
          } else {
            targetBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder addAllTarget(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> values) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, target_);
            onChanged();
          } else {
            targetBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder clearTarget() {
          if (targetBuilder_ == null) {
            target_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            targetBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public Builder removeTarget(int index) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.remove(index);
            onChanged();
          } else {
            targetBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder getTargetBuilder(
            int index) {
          return getTargetFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetOrBuilder(
            int index) {
          if (targetBuilder_ == null) {
            return target_.get(index);  } else {
            return targetBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
             getTargetOrBuilderList() {
          if (targetBuilder_ != null) {
            return targetBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(target_);
          }
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTargetBuilder() {
          return getTargetFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTargetBuilder(
            int index) {
          return getTargetFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Inventory-specific targeting. The target object contains an
         * arbitrary set of keys with values comprising of arrays of strings
         * used for Deals (Private Marketplace) targeting, utilized to target
         * first party inventory data. First party inventory data consists of
         * data about the inventory (i.e. category of page, price of item,
         * etc.).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 4;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder> 
             getTargetBuilderList() {
          return getTargetFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
            getTargetFieldBuilder() {
          if (targetBuilder_ == null) {
            targetBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder>(
                    target_,
                    ((bitField0_ & 0x00000008) != 0),
                    getParentForChildren(),
                    isClean());
            target_ = null;
          }
          return targetBuilder_;
        }

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> track_ =
          java.util.Collections.emptyList();
        private void ensureTrackIsMutable() {
          if (!((bitField0_ & 0x00000010) != 0)) {
            track_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>(track_);
            bitField0_ |= 0x00000010;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> trackBuilder_;

        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTrackList() {
          if (trackBuilder_ == null) {
            return java.util.Collections.unmodifiableList(track_);
          } else {
            return trackBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public int getTrackCount() {
          if (trackBuilder_ == null) {
            return track_.size();
          } else {
            return trackBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTrack(int index) {
          if (trackBuilder_ == null) {
            return track_.get(index);
          } else {
            return trackBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder setTrack(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (trackBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTrackIsMutable();
            track_.set(index, value);
            onChanged();
          } else {
            trackBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder setTrack(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (trackBuilder_ == null) {
            ensureTrackIsMutable();
            track_.set(index, builderForValue.build());
            onChanged();
          } else {
            trackBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder addTrack(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (trackBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTrackIsMutable();
            track_.add(value);
            onChanged();
          } else {
            trackBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder addTrack(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (trackBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTrackIsMutable();
            track_.add(index, value);
            onChanged();
          } else {
            trackBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder addTrack(
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (trackBuilder_ == null) {
            ensureTrackIsMutable();
            track_.add(builderForValue.build());
            onChanged();
          } else {
            trackBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder addTrack(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (trackBuilder_ == null) {
            ensureTrackIsMutable();
            track_.add(index, builderForValue.build());
            onChanged();
          } else {
            trackBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder addAllTrack(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> values) {
          if (trackBuilder_ == null) {
            ensureTrackIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, track_);
            onChanged();
          } else {
            trackBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder clearTrack() {
          if (trackBuilder_ == null) {
            track_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            trackBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public Builder removeTrack(int index) {
          if (trackBuilder_ == null) {
            ensureTrackIsMutable();
            track_.remove(index);
            onChanged();
          } else {
            trackBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder getTrackBuilder(
            int index) {
          return getTrackFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTrackOrBuilder(
            int index) {
          if (trackBuilder_ == null) {
            return track_.get(index);  } else {
            return trackBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
             getTrackOrBuilderList() {
          if (trackBuilder_ != null) {
            return trackBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(track_);
          }
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTrackBuilder() {
          return getTrackFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTrackBuilder(
            int index) {
          return getTrackFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Inventory-specific tracking/reporting.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair track = 5;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder> 
             getTrackBuilderList() {
          return getTrackFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
            getTrackFieldBuilder() {
          if (trackBuilder_ == null) {
            trackBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder>(
                    track_,
                    ((bitField0_ & 0x00000010) != 0),
                    getParentForChildren(),
                    isClean());
            track_ = null;
          }
          return trackBuilder_;
        }

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> rtb_ =
          java.util.Collections.emptyList();
        private void ensureRtbIsMutable() {
          if (!((bitField0_ & 0x00000020) != 0)) {
            rtb_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>(rtb_);
            bitField0_ |= 0x00000020;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> rtbBuilder_;

        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getRtbList() {
          if (rtbBuilder_ == null) {
            return java.util.Collections.unmodifiableList(rtb_);
          } else {
            return rtbBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public int getRtbCount() {
          if (rtbBuilder_ == null) {
            return rtb_.size();
          } else {
            return rtbBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getRtb(int index) {
          if (rtbBuilder_ == null) {
            return rtb_.get(index);
          } else {
            return rtbBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder setRtb(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (rtbBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRtbIsMutable();
            rtb_.set(index, value);
            onChanged();
          } else {
            rtbBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder setRtb(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (rtbBuilder_ == null) {
            ensureRtbIsMutable();
            rtb_.set(index, builderForValue.build());
            onChanged();
          } else {
            rtbBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder addRtb(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (rtbBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRtbIsMutable();
            rtb_.add(value);
            onChanged();
          } else {
            rtbBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder addRtb(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (rtbBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRtbIsMutable();
            rtb_.add(index, value);
            onChanged();
          } else {
            rtbBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder addRtb(
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (rtbBuilder_ == null) {
            ensureRtbIsMutable();
            rtb_.add(builderForValue.build());
            onChanged();
          } else {
            rtbBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder addRtb(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (rtbBuilder_ == null) {
            ensureRtbIsMutable();
            rtb_.add(index, builderForValue.build());
            onChanged();
          } else {
            rtbBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder addAllRtb(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> values) {
          if (rtbBuilder_ == null) {
            ensureRtbIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, rtb_);
            onChanged();
          } else {
            rtbBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder clearRtb() {
          if (rtbBuilder_ == null) {
            rtb_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
          } else {
            rtbBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public Builder removeRtb(int index) {
          if (rtbBuilder_ == null) {
            ensureRtbIsMutable();
            rtb_.remove(index);
            onChanged();
          } else {
            rtbBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder getRtbBuilder(
            int index) {
          return getRtbFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getRtbOrBuilder(
            int index) {
          if (rtbBuilder_ == null) {
            return rtb_.get(index);  } else {
            return rtbBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
             getRtbOrBuilderList() {
          if (rtbBuilder_ != null) {
            return rtbBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(rtb_);
          }
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addRtbBuilder() {
          return getRtbFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addRtbBuilder(
            int index) {
          return getRtbFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Optional parameters that will be passed to DSPs, and logged by Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair rtb = 6;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder> 
             getRtbBuilderList() {
          return getRtbFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
            getRtbFieldBuilder() {
          if (rtbBuilder_ == null) {
            rtbBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder>(
                    rtb_,
                    ((bitField0_ & 0x00000020) != 0),
                    getParentForChildren(),
                    isClean());
            rtb_ = null;
          }
          return rtbBuilder_;
        }

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> nolog_ =
          java.util.Collections.emptyList();
        private void ensureNologIsMutable() {
          if (!((bitField0_ & 0x00000040) != 0)) {
            nolog_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>(nolog_);
            bitField0_ |= 0x00000040;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> nologBuilder_;

        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getNologList() {
          if (nologBuilder_ == null) {
            return java.util.Collections.unmodifiableList(nolog_);
          } else {
            return nologBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public int getNologCount() {
          if (nologBuilder_ == null) {
            return nolog_.size();
          } else {
            return nologBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getNolog(int index) {
          if (nologBuilder_ == null) {
            return nolog_.get(index);
          } else {
            return nologBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder setNolog(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (nologBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNologIsMutable();
            nolog_.set(index, value);
            onChanged();
          } else {
            nologBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder setNolog(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (nologBuilder_ == null) {
            ensureNologIsMutable();
            nolog_.set(index, builderForValue.build());
            onChanged();
          } else {
            nologBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder addNolog(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (nologBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNologIsMutable();
            nolog_.add(value);
            onChanged();
          } else {
            nologBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder addNolog(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (nologBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNologIsMutable();
            nolog_.add(index, value);
            onChanged();
          } else {
            nologBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder addNolog(
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (nologBuilder_ == null) {
            ensureNologIsMutable();
            nolog_.add(builderForValue.build());
            onChanged();
          } else {
            nologBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder addNolog(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (nologBuilder_ == null) {
            ensureNologIsMutable();
            nolog_.add(index, builderForValue.build());
            onChanged();
          } else {
            nologBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder addAllNolog(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> values) {
          if (nologBuilder_ == null) {
            ensureNologIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, nolog_);
            onChanged();
          } else {
            nologBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder clearNolog() {
          if (nologBuilder_ == null) {
            nolog_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
          } else {
            nologBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public Builder removeNolog(int index) {
          if (nologBuilder_ == null) {
            ensureNologIsMutable();
            nolog_.remove(index);
            onChanged();
          } else {
            nologBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder getNologBuilder(
            int index) {
          return getNologFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getNologOrBuilder(
            int index) {
          if (nologBuilder_ == null) {
            return nolog_.get(index);  } else {
            return nologBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
             getNologOrBuilderList() {
          if (nologBuilder_ != null) {
            return nologBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(nolog_);
          }
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addNologBuilder() {
          return getNologFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addNologBuilder(
            int index) {
          return getNologFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Optional parameters that will passed to DSPs, though not logged within Magnite.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair nolog = 7;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder> 
             getNologBuilderList() {
          return getNologFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
            getNologFieldBuilder() {
          if (nologBuilder_ == null) {
            nologBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder>(
                    nolog_,
                    ((bitField0_ & 0x00000040) != 0),
                    getParentForChildren(),
                    isClean());
            nolog_ = null;
          }
          return nologBuilder_;
        }

        private com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand proxydemand_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemandOrBuilder> proxydemandBuilder_;
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         * @return Whether the proxydemand field is set.
         */
        public boolean hasProxydemand() {
          return ((bitField0_ & 0x00000080) != 0);
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         * @return The proxydemand.
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand getProxydemand() {
          if (proxydemandBuilder_ == null) {
            return proxydemand_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.getDefaultInstance() : proxydemand_;
          } else {
            return proxydemandBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         */
        public Builder setProxydemand(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand value) {
          if (proxydemandBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            proxydemand_ = value;
            onChanged();
          } else {
            proxydemandBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         */
        public Builder setProxydemand(
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder builderForValue) {
          if (proxydemandBuilder_ == null) {
            proxydemand_ = builderForValue.build();
            onChanged();
          } else {
            proxydemandBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         */
        public Builder mergeProxydemand(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand value) {
          if (proxydemandBuilder_ == null) {
            if (((bitField0_ & 0x00000080) != 0) &&
                proxydemand_ != null &&
                proxydemand_ != com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.getDefaultInstance()) {
              proxydemand_ =
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.newBuilder(proxydemand_).mergeFrom(value).buildPartial();
            } else {
              proxydemand_ = value;
            }
            onChanged();
          } else {
            proxydemandBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         */
        public Builder clearProxydemand() {
          if (proxydemandBuilder_ == null) {
            proxydemand_ = null;
            onChanged();
          } else {
            proxydemandBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder getProxydemandBuilder() {
          bitField0_ |= 0x00000080;
          onChanged();
          return getProxydemandFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemandOrBuilder getProxydemandOrBuilder() {
          if (proxydemandBuilder_ != null) {
            return proxydemandBuilder_.getMessageOrBuilder();
          } else {
            return proxydemand_ == null ?
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.getDefaultInstance() : proxydemand_;
          }
        }
        /**
         * <pre>
         * The proxy demand object contains a parent object for usage where the
         * primary ad server wants to represent native demand in the auction.
         * These bids will be treated as “house bids” for which no revenue is
         * recorded.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.ImpExt.ProxyDemand proxydemand = 8;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemandOrBuilder> 
            getProxydemandFieldBuilder() {
          if (proxydemandBuilder_ == null) {
            proxydemandBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemand.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.ProxyDemandOrBuilder>(
                    getProxydemand(),
                    getParentForChildren(),
                    isClean());
            proxydemand_ = null;
          }
          return proxydemandBuilder_;
        }

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor> floors_ =
          java.util.Collections.emptyList();
        private void ensureFloorsIsMutable() {
          if (!((bitField0_ & 0x00000100) != 0)) {
            floors_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor>(floors_);
            bitField0_ |= 0x00000100;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder> floorsBuilder_;

        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor> getFloorsList() {
          if (floorsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(floors_);
          } else {
            return floorsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public int getFloorsCount() {
          if (floorsBuilder_ == null) {
            return floors_.size();
          } else {
            return floorsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor getFloors(int index) {
          if (floorsBuilder_ == null) {
            return floors_.get(index);
          } else {
            return floorsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder setFloors(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor value) {
          if (floorsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFloorsIsMutable();
            floors_.set(index, value);
            onChanged();
          } else {
            floorsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder setFloors(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder builderForValue) {
          if (floorsBuilder_ == null) {
            ensureFloorsIsMutable();
            floors_.set(index, builderForValue.build());
            onChanged();
          } else {
            floorsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder addFloors(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor value) {
          if (floorsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFloorsIsMutable();
            floors_.add(value);
            onChanged();
          } else {
            floorsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder addFloors(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor value) {
          if (floorsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFloorsIsMutable();
            floors_.add(index, value);
            onChanged();
          } else {
            floorsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder addFloors(
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder builderForValue) {
          if (floorsBuilder_ == null) {
            ensureFloorsIsMutable();
            floors_.add(builderForValue.build());
            onChanged();
          } else {
            floorsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder addFloors(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder builderForValue) {
          if (floorsBuilder_ == null) {
            ensureFloorsIsMutable();
            floors_.add(index, builderForValue.build());
            onChanged();
          } else {
            floorsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder addAllFloors(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor> values) {
          if (floorsBuilder_ == null) {
            ensureFloorsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, floors_);
            onChanged();
          } else {
            floorsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder clearFloors() {
          if (floorsBuilder_ == null) {
            floors_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            onChanged();
          } else {
            floorsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public Builder removeFloors(int index) {
          if (floorsBuilder_ == null) {
            ensureFloorsIsMutable();
            floors_.remove(index);
            onChanged();
          } else {
            floorsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder getFloorsBuilder(
            int index) {
          return getFloorsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder getFloorsOrBuilder(
            int index) {
          if (floorsBuilder_ == null) {
            return floors_.get(index);  } else {
            return floorsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder> 
             getFloorsOrBuilderList() {
          if (floorsBuilder_ != null) {
            return floorsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(floors_);
          }
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder addFloorsBuilder() {
          return getFloorsFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.getDefaultInstance());
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder addFloorsBuilder(
            int index) {
          return getFloorsFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.getDefaultInstance());
        }
        /**
         * <pre>
         * Floor data used to synthesize RTB rules.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.ImpExt.Floor floors = 9;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder> 
             getFloorsBuilderList() {
          return getFloorsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder> 
            getFloorsFieldBuilder() {
          if (floorsBuilder_ == null) {
            floorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Floor.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.FloorOrBuilder>(
                    floors_,
                    ((bitField0_ & 0x00000100) != 0),
                    getParentForChildren(),
                    isClean());
            floors_ = null;
          }
          return floorsBuilder_;
        }

        private java.lang.Object gpid_ = "";
        /**
         * <pre>
         * Global Placement ID. The unique identifier of the placement that is sent 
         * to all participants in buying impressions for this placement. In general, 
         * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
         * or some value provided by the publisher or ad server.
         * </pre>
         *
         * <code>optional string gpid = 10;</code>
         * @return Whether the gpid field is set.
         */
        public boolean hasGpid() {
          return ((bitField0_ & 0x00000200) != 0);
        }
        /**
         * <pre>
         * Global Placement ID. The unique identifier of the placement that is sent 
         * to all participants in buying impressions for this placement. In general, 
         * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
         * or some value provided by the publisher or ad server.
         * </pre>
         *
         * <code>optional string gpid = 10;</code>
         * @return The gpid.
         */
        public java.lang.String getGpid() {
          java.lang.Object ref = gpid_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              gpid_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Global Placement ID. The unique identifier of the placement that is sent 
         * to all participants in buying impressions for this placement. In general, 
         * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
         * or some value provided by the publisher or ad server.
         * </pre>
         *
         * <code>optional string gpid = 10;</code>
         * @return The bytes for gpid.
         */
        public com.google.protobuf.ByteString
            getGpidBytes() {
          java.lang.Object ref = gpid_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            gpid_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Global Placement ID. The unique identifier of the placement that is sent 
         * to all participants in buying impressions for this placement. In general, 
         * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
         * or some value provided by the publisher or ad server.
         * </pre>
         *
         * <code>optional string gpid = 10;</code>
         * @param value The gpid to set.
         * @return This builder for chaining.
         */
        public Builder setGpid(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
          gpid_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Global Placement ID. The unique identifier of the placement that is sent 
         * to all participants in buying impressions for this placement. In general, 
         * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
         * or some value provided by the publisher or ad server.
         * </pre>
         *
         * <code>optional string gpid = 10;</code>
         * @return This builder for chaining.
         */
        public Builder clearGpid() {
          bitField0_ = (bitField0_ & ~0x00000200);
          gpid_ = getDefaultInstance().getGpid();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Global Placement ID. The unique identifier of the placement that is sent 
         * to all participants in buying impressions for this placement. In general, 
         * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
         * or some value provided by the publisher or ad server.
         * </pre>
         *
         * <code>optional string gpid = 10;</code>
         * @param value The bytes for gpid to set.
         * @return This builder for chaining.
         */
        public Builder setGpidBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
          gpid_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.ImpExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.ImpExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.getDefaultInstance() : rp_;
    }

    public static final int WINDOW_FIELD_NUMBER = 2;
    private com.magnite.openrtb.v2.OpenRtbXapi.Window window_;
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return Whether the window field is set.
     */
    @java.lang.Override
    public boolean hasWindow() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return The window.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.Window getWindow() {
      return window_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
    }
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder getWindowOrBuilder() {
      return window_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
    }

    public static final int VIEWABILITYVENDORS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList viewabilityvendors_;
    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @return A list containing the viewabilityvendors.
     */
    public com.google.protobuf.ProtocolStringList
        getViewabilityvendorsList() {
      return viewabilityvendors_;
    }
    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @return The count of viewabilityvendors.
     */
    public int getViewabilityvendorsCount() {
      return viewabilityvendors_.size();
    }
    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @param index The index of the element to return.
     * @return The viewabilityvendors at the given index.
     */
    public java.lang.String getViewabilityvendors(int index) {
      return viewabilityvendors_.get(index);
    }
    /**
     * <pre>
     * Supported viewability vendors. For list of supported vendors, visit:
     * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
     * </pre>
     *
     * <code>repeated string viewabilityvendors = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the viewabilityvendors at the given index.
     */
    public com.google.protobuf.ByteString
        getViewabilityvendorsBytes(int index) {
      return viewabilityvendors_.getByteString(index);
    }

    public static final int GPID_FIELD_NUMBER = 4;
    private volatile java.lang.Object gpid_;
    /**
     * <pre>
     * Global Placement ID. The unique identifier of the placement that is sent 
     * to all participants in buying impressions for this placement. In general, 
     * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
     * or some value provided by the publisher or ad server.
     * </pre>
     *
     * <code>optional string gpid = 4;</code>
     * @return Whether the gpid field is set.
     */
    @java.lang.Override
    public boolean hasGpid() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Global Placement ID. The unique identifier of the placement that is sent 
     * to all participants in buying impressions for this placement. In general, 
     * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
     * or some value provided by the publisher or ad server.
     * </pre>
     *
     * <code>optional string gpid = 4;</code>
     * @return The gpid.
     */
    @java.lang.Override
    public java.lang.String getGpid() {
      java.lang.Object ref = gpid_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          gpid_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Global Placement ID. The unique identifier of the placement that is sent 
     * to all participants in buying impressions for this placement. In general, 
     * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
     * or some value provided by the publisher or ad server.
     * </pre>
     *
     * <code>optional string gpid = 4;</code>
     * @return The bytes for gpid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGpidBytes() {
      java.lang.Object ref = gpid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gpid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getWindow());
      }
      for (int i = 0; i < viewabilityvendors_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, viewabilityvendors_.getRaw(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, gpid_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getWindow());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < viewabilityvendors_.size(); i++) {
          dataSize += computeStringSizeNoTag(viewabilityvendors_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getViewabilityvendorsList().size();
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, gpid_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt other = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (hasWindow() != other.hasWindow()) return false;
      if (hasWindow()) {
        if (!getWindow()
            .equals(other.getWindow())) return false;
      }
      if (!getViewabilityvendorsList()
          .equals(other.getViewabilityvendorsList())) return false;
      if (hasGpid() != other.hasGpid()) return false;
      if (hasGpid()) {
        if (!getGpid()
            .equals(other.getGpid())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      if (hasWindow()) {
        hash = (37 * hash) + WINDOW_FIELD_NUMBER;
        hash = (53 * hash) + getWindow().hashCode();
      }
      if (getViewabilityvendorsCount() > 0) {
        hash = (37 * hash) + VIEWABILITYVENDORS_FIELD_NUMBER;
        hash = (53 * hash) + getViewabilityvendorsList().hashCode();
      }
      if (hasGpid()) {
        hash = (37 * hash) + GPID_FIELD_NUMBER;
        hash = (53 * hash) + getGpid().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.ImpExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.ImpExt)
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.class, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
          getWindowFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (windowBuilder_ == null) {
          window_ = null;
        } else {
          windowBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        gpid_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_ImpExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt result = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (windowBuilder_ == null) {
            result.window_ = window_;
          } else {
            result.window_ = windowBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          viewabilityvendors_ = viewabilityvendors_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.viewabilityvendors_ = viewabilityvendors_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.gpid_ = gpid_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.ImpExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.ImpExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        if (other.hasWindow()) {
          mergeWindow(other.getWindow());
        }
        if (!other.viewabilityvendors_.isEmpty()) {
          if (viewabilityvendors_.isEmpty()) {
            viewabilityvendors_ = other.viewabilityvendors_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureViewabilityvendorsIsMutable();
            viewabilityvendors_.addAll(other.viewabilityvendors_);
          }
          onChanged();
        }
        if (other.hasGpid()) {
          bitField0_ |= 0x00000008;
          gpid_ = other.gpid_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.ImpExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.ImpExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }

      private com.magnite.openrtb.v2.OpenRtbXapi.Window window_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.Window, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder, com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder> windowBuilder_;
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       * @return Whether the window field is set.
       */
      public boolean hasWindow() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       * @return The window.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.Window getWindow() {
        if (windowBuilder_ == null) {
          return window_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
        } else {
          return windowBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder setWindow(com.magnite.openrtb.v2.OpenRtbXapi.Window value) {
        if (windowBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          window_ = value;
          onChanged();
        } else {
          windowBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder setWindow(
          com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder builderForValue) {
        if (windowBuilder_ == null) {
          window_ = builderForValue.build();
          onChanged();
        } else {
          windowBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder mergeWindow(com.magnite.openrtb.v2.OpenRtbXapi.Window value) {
        if (windowBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              window_ != null &&
              window_ != com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance()) {
            window_ =
              com.magnite.openrtb.v2.OpenRtbXapi.Window.newBuilder(window_).mergeFrom(value).buildPartial();
          } else {
            window_ = value;
          }
          onChanged();
        } else {
          windowBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder clearWindow() {
        if (windowBuilder_ == null) {
          window_ = null;
          onChanged();
        } else {
          windowBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder getWindowBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getWindowFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder getWindowOrBuilder() {
        if (windowBuilder_ != null) {
          return windowBuilder_.getMessageOrBuilder();
        } else {
          return window_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
        }
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.Window, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder, com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder> 
          getWindowFieldBuilder() {
        if (windowBuilder_ == null) {
          windowBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.Window, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder, com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder>(
                  getWindow(),
                  getParentForChildren(),
                  isClean());
          window_ = null;
        }
        return windowBuilder_;
      }

      private com.google.protobuf.LazyStringList viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureViewabilityvendorsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          viewabilityvendors_ = new com.google.protobuf.LazyStringArrayList(viewabilityvendors_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @return A list containing the viewabilityvendors.
       */
      public com.google.protobuf.ProtocolStringList
          getViewabilityvendorsList() {
        return viewabilityvendors_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @return The count of viewabilityvendors.
       */
      public int getViewabilityvendorsCount() {
        return viewabilityvendors_.size();
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @param index The index of the element to return.
       * @return The viewabilityvendors at the given index.
       */
      public java.lang.String getViewabilityvendors(int index) {
        return viewabilityvendors_.get(index);
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the viewabilityvendors at the given index.
       */
      public com.google.protobuf.ByteString
          getViewabilityvendorsBytes(int index) {
        return viewabilityvendors_.getByteString(index);
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @param index The index to set the value at.
       * @param value The viewabilityvendors to set.
       * @return This builder for chaining.
       */
      public Builder setViewabilityvendors(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureViewabilityvendorsIsMutable();
        viewabilityvendors_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @param value The viewabilityvendors to add.
       * @return This builder for chaining.
       */
      public Builder addViewabilityvendors(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureViewabilityvendorsIsMutable();
        viewabilityvendors_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @param values The viewabilityvendors to add.
       * @return This builder for chaining.
       */
      public Builder addAllViewabilityvendors(
          java.lang.Iterable<java.lang.String> values) {
        ensureViewabilityvendorsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, viewabilityvendors_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearViewabilityvendors() {
        viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 3;</code>
       * @param value The bytes of the viewabilityvendors to add.
       * @return This builder for chaining.
       */
      public Builder addViewabilityvendorsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureViewabilityvendorsIsMutable();
        viewabilityvendors_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object gpid_ = "";
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 4;</code>
       * @return Whether the gpid field is set.
       */
      public boolean hasGpid() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 4;</code>
       * @return The gpid.
       */
      public java.lang.String getGpid() {
        java.lang.Object ref = gpid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            gpid_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 4;</code>
       * @return The bytes for gpid.
       */
      public com.google.protobuf.ByteString
          getGpidBytes() {
        java.lang.Object ref = gpid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gpid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 4;</code>
       * @param value The gpid to set.
       * @return This builder for chaining.
       */
      public Builder setGpid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        gpid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearGpid() {
        bitField0_ = (bitField0_ & ~0x00000008);
        gpid_ = getDefaultInstance().getGpid();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Global Placement ID. The unique identifier of the placement that is sent 
       * to all participants in buying impressions for this placement. In general, 
       * this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
       * or some value provided by the publisher or ad server.
       * </pre>
       *
       * <code>optional string gpid = 4;</code>
       * @param value The bytes for gpid to set.
       * @return This builder for chaining.
       */
      public Builder setGpidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        gpid_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.ImpExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.ImpExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.ImpExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.ImpExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.ImpExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ImpExt>
        PARSER = new com.google.protobuf.AbstractParser<ImpExt>() {
      @java.lang.Override
      public ImpExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ImpExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ImpExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ImpExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.ImpExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VideoExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.VideoExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The orientation of the video player, so the buyer can adjust accordingly.
     * Allowed values are "h" (horizontal) and "v" (vertical).
     * </pre>
     *
     * <code>optional string orientation = 1;</code>
     * @return Whether the orientation field is set.
     */
    boolean hasOrientation();
    /**
     * <pre>
     * The orientation of the video player, so the buyer can adjust accordingly.
     * Allowed values are "h" (horizontal) and "v" (vertical).
     * </pre>
     *
     * <code>optional string orientation = 1;</code>
     * @return The orientation.
     */
    java.lang.String getOrientation();
    /**
     * <pre>
     * The orientation of the video player, so the buyer can adjust accordingly.
     * Allowed values are "h" (horizontal) and "v" (vertical).
     * </pre>
     *
     * <code>optional string orientation = 1;</code>
     * @return The bytes for orientation.
     */
    com.google.protobuf.ByteString
        getOrientationBytes();

    /**
     * <pre>
     * Addtions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Addtions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp getRp();
    /**
     * <pre>
     * Addtions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.RpOrBuilder getRpOrBuilder();

    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
     * @return Whether the ad field is set.
     */
    boolean hasAd();
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
     * @return The ad.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad getAd();
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.AdOrBuilder getAdOrBuilder();

    /**
     * <pre>
     * DEPRECATED: Use “skip” field from the video object.
     * </pre>
     *
     * <code>optional bool skip = 4;</code>
     * @return Whether the skip field is set.
     */
    boolean hasSkip();
    /**
     * <pre>
     * DEPRECATED: Use “skip” field from the video object.
     * </pre>
     *
     * <code>optional bool skip = 4;</code>
     * @return The skip.
     */
    boolean getSkip();

    /**
     * <pre>
     * DEPRECATED: Replaced by “skipafter” in the video object.
     * </pre>
     *
     * <code>optional int32 skipdelay = 5;</code>
     * @return Whether the skipdelay field is set.
     */
    boolean hasSkipdelay();
    /**
     * <pre>
     * DEPRECATED: Replaced by “skipafter” in the video object.
     * </pre>
     *
     * <code>optional int32 skipdelay = 5;</code>
     * @return The skipdelay.
     */
    int getSkipdelay();

    /**
     * <pre>
     * Placement type for the impression. Refer to IAB OpenRTB
     * VideoPlacementType enum.
     * </pre>
     *
     * <code>optional int32 placement = 6;</code>
     * @return Whether the placement field is set.
     */
    boolean hasPlacement();
    /**
     * <pre>
     * Placement type for the impression. Refer to IAB OpenRTB
     * VideoPlacementType enum.
     * </pre>
     *
     * <code>optional int32 placement = 6;</code>
     * @return The placement.
     */
    int getPlacement();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.VideoExt}
   */
  public static final class VideoExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.VideoExt)
      VideoExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use VideoExt.newBuilder() to construct.
    private VideoExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private VideoExt() {
      orientation_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new VideoExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private VideoExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              orientation_ = bs;
              break;
            }
            case 18: {
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = ad_.toBuilder();
              }
              ad_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(ad_);
                ad_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              skip_ = input.readBool();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              skipdelay_ = input.readInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              placement_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.class, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.VideoExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return Whether the sizeId field is set.
       */
      boolean hasSizeId();
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return The sizeId.
       */
      int getSizeId();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.VideoExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.VideoExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                sizeId_ = input.readUInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int SIZE_ID_FIELD_NUMBER = 1;
      private int sizeId_;
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return Whether the sizeId field is set.
       */
      @java.lang.Override
      public boolean hasSizeId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return The sizeId.
       */
      @java.lang.Override
      public int getSizeId() {
        return sizeId_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt32(1, sizeId_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, sizeId_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp) obj;

        if (hasSizeId() != other.hasSizeId()) return false;
        if (hasSizeId()) {
          if (getSizeId()
              != other.getSizeId()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSizeId()) {
          hash = (37 * hash) + SIZE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getSizeId();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.VideoExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.VideoExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          sizeId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.sizeId_ = sizeId_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.getDefaultInstance()) return this;
          if (other.hasSizeId()) {
            setSizeId(other.getSizeId());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int sizeId_ ;
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return Whether the sizeId field is set.
         */
        @java.lang.Override
        public boolean hasSizeId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return The sizeId.
         */
        @java.lang.Override
        public int getSizeId() {
          return sizeId_;
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @param value The sizeId to set.
         * @return This builder for chaining.
         */
        public Builder setSizeId(int value) {
          bitField0_ |= 0x00000001;
          sizeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSizeId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sizeId_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.VideoExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.VideoExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface AdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.VideoExt.Ad)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Width of ad render area.
       * </pre>
       *
       * <code>optional int32 w = 1;</code>
       * @return Whether the w field is set.
       */
      boolean hasW();
      /**
       * <pre>
       * Width of ad render area.
       * </pre>
       *
       * <code>optional int32 w = 1;</code>
       * @return The w.
       */
      int getW();

      /**
       * <pre>
       * Height of ad render area.
       * </pre>
       *
       * <code>optional int32 h = 2;</code>
       * @return Whether the h field is set.
       */
      boolean hasH();
      /**
       * <pre>
       * Height of ad render area.
       * </pre>
       *
       * <code>optional int32 h = 2;</code>
       * @return The h.
       */
      int getH();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.VideoExt.Ad}
     */
    public static final class Ad extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.VideoExt.Ad)
        AdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Ad.newBuilder() to construct.
      private Ad(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Ad() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Ad();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Ad(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                w_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                h_ = input.readInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Ad_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Ad_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.class, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder.class);
      }

      private int bitField0_;
      public static final int W_FIELD_NUMBER = 1;
      private int w_;
      /**
       * <pre>
       * Width of ad render area.
       * </pre>
       *
       * <code>optional int32 w = 1;</code>
       * @return Whether the w field is set.
       */
      @java.lang.Override
      public boolean hasW() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Width of ad render area.
       * </pre>
       *
       * <code>optional int32 w = 1;</code>
       * @return The w.
       */
      @java.lang.Override
      public int getW() {
        return w_;
      }

      public static final int H_FIELD_NUMBER = 2;
      private int h_;
      /**
       * <pre>
       * Height of ad render area.
       * </pre>
       *
       * <code>optional int32 h = 2;</code>
       * @return Whether the h field is set.
       */
      @java.lang.Override
      public boolean hasH() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Height of ad render area.
       * </pre>
       *
       * <code>optional int32 h = 2;</code>
       * @return The h.
       */
      @java.lang.Override
      public int getH() {
        return h_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, w_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(2, h_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, w_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, h_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad other = (com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad) obj;

        if (hasW() != other.hasW()) return false;
        if (hasW()) {
          if (getW()
              != other.getW()) return false;
        }
        if (hasH() != other.hasH()) return false;
        if (hasH()) {
          if (getH()
              != other.getH()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasW()) {
          hash = (37 * hash) + W_FIELD_NUMBER;
          hash = (53 * hash) + getW();
        }
        if (hasH()) {
          hash = (37 * hash) + H_FIELD_NUMBER;
          hash = (53 * hash) + getH();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.VideoExt.Ad}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.VideoExt.Ad)
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.AdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Ad_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Ad_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.class, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          w_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          h_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_Ad_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad build() {
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad result = new com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.w_ = w_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.h_ = h_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.getDefaultInstance()) return this;
          if (other.hasW()) {
            setW(other.getW());
          }
          if (other.hasH()) {
            setH(other.getH());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int w_ ;
        /**
         * <pre>
         * Width of ad render area.
         * </pre>
         *
         * <code>optional int32 w = 1;</code>
         * @return Whether the w field is set.
         */
        @java.lang.Override
        public boolean hasW() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Width of ad render area.
         * </pre>
         *
         * <code>optional int32 w = 1;</code>
         * @return The w.
         */
        @java.lang.Override
        public int getW() {
          return w_;
        }
        /**
         * <pre>
         * Width of ad render area.
         * </pre>
         *
         * <code>optional int32 w = 1;</code>
         * @param value The w to set.
         * @return This builder for chaining.
         */
        public Builder setW(int value) {
          bitField0_ |= 0x00000001;
          w_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Width of ad render area.
         * </pre>
         *
         * <code>optional int32 w = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearW() {
          bitField0_ = (bitField0_ & ~0x00000001);
          w_ = 0;
          onChanged();
          return this;
        }

        private int h_ ;
        /**
         * <pre>
         * Height of ad render area.
         * </pre>
         *
         * <code>optional int32 h = 2;</code>
         * @return Whether the h field is set.
         */
        @java.lang.Override
        public boolean hasH() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * Height of ad render area.
         * </pre>
         *
         * <code>optional int32 h = 2;</code>
         * @return The h.
         */
        @java.lang.Override
        public int getH() {
          return h_;
        }
        /**
         * <pre>
         * Height of ad render area.
         * </pre>
         *
         * <code>optional int32 h = 2;</code>
         * @param value The h to set.
         * @return This builder for chaining.
         */
        public Builder setH(int value) {
          bitField0_ |= 0x00000002;
          h_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Height of ad render area.
         * </pre>
         *
         * <code>optional int32 h = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearH() {
          bitField0_ = (bitField0_ & ~0x00000002);
          h_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.VideoExt.Ad)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.VideoExt.Ad)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Ad>
          PARSER = new com.google.protobuf.AbstractParser<Ad>() {
        @java.lang.Override
        public Ad parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Ad(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Ad> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Ad> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int ORIENTATION_FIELD_NUMBER = 1;
    private volatile java.lang.Object orientation_;
    /**
     * <pre>
     * The orientation of the video player, so the buyer can adjust accordingly.
     * Allowed values are "h" (horizontal) and "v" (vertical).
     * </pre>
     *
     * <code>optional string orientation = 1;</code>
     * @return Whether the orientation field is set.
     */
    @java.lang.Override
    public boolean hasOrientation() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The orientation of the video player, so the buyer can adjust accordingly.
     * Allowed values are "h" (horizontal) and "v" (vertical).
     * </pre>
     *
     * <code>optional string orientation = 1;</code>
     * @return The orientation.
     */
    @java.lang.Override
    public java.lang.String getOrientation() {
      java.lang.Object ref = orientation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          orientation_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The orientation of the video player, so the buyer can adjust accordingly.
     * Allowed values are "h" (horizontal) and "v" (vertical).
     * </pre>
     *
     * <code>optional string orientation = 1;</code>
     * @return The bytes for orientation.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOrientationBytes() {
      java.lang.Object ref = orientation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        orientation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RP_FIELD_NUMBER = 2;
    private com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp rp_;
    /**
     * <pre>
     * Addtions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Addtions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Addtions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.getDefaultInstance() : rp_;
    }

    public static final int AD_FIELD_NUMBER = 3;
    private com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad ad_;
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
     * @return Whether the ad field is set.
     */
    @java.lang.Override
    public boolean hasAd() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
     * @return The ad.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad getAd() {
      return ad_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.getDefaultInstance() : ad_;
    }
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.AdOrBuilder getAdOrBuilder() {
      return ad_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.getDefaultInstance() : ad_;
    }

    public static final int SKIP_FIELD_NUMBER = 4;
    private boolean skip_;
    /**
     * <pre>
     * DEPRECATED: Use “skip” field from the video object.
     * </pre>
     *
     * <code>optional bool skip = 4;</code>
     * @return Whether the skip field is set.
     */
    @java.lang.Override
    public boolean hasSkip() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * DEPRECATED: Use “skip” field from the video object.
     * </pre>
     *
     * <code>optional bool skip = 4;</code>
     * @return The skip.
     */
    @java.lang.Override
    public boolean getSkip() {
      return skip_;
    }

    public static final int SKIPDELAY_FIELD_NUMBER = 5;
    private int skipdelay_;
    /**
     * <pre>
     * DEPRECATED: Replaced by “skipafter” in the video object.
     * </pre>
     *
     * <code>optional int32 skipdelay = 5;</code>
     * @return Whether the skipdelay field is set.
     */
    @java.lang.Override
    public boolean hasSkipdelay() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * DEPRECATED: Replaced by “skipafter” in the video object.
     * </pre>
     *
     * <code>optional int32 skipdelay = 5;</code>
     * @return The skipdelay.
     */
    @java.lang.Override
    public int getSkipdelay() {
      return skipdelay_;
    }

    public static final int PLACEMENT_FIELD_NUMBER = 6;
    private int placement_;
    /**
     * <pre>
     * Placement type for the impression. Refer to IAB OpenRTB
     * VideoPlacementType enum.
     * </pre>
     *
     * <code>optional int32 placement = 6;</code>
     * @return Whether the placement field is set.
     */
    @java.lang.Override
    public boolean hasPlacement() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Placement type for the impression. Refer to IAB OpenRTB
     * VideoPlacementType enum.
     * </pre>
     *
     * <code>optional int32 placement = 6;</code>
     * @return The placement.
     */
    @java.lang.Override
    public int getPlacement() {
      return placement_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, orientation_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getRp());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getAd());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, skip_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, skipdelay_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeInt32(6, placement_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, orientation_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getRp());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getAd());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, skip_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, skipdelay_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, placement_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.VideoExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.VideoExt other = (com.magnite.openrtb.v2.OpenRtbXapi.VideoExt) obj;

      if (hasOrientation() != other.hasOrientation()) return false;
      if (hasOrientation()) {
        if (!getOrientation()
            .equals(other.getOrientation())) return false;
      }
      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (hasAd() != other.hasAd()) return false;
      if (hasAd()) {
        if (!getAd()
            .equals(other.getAd())) return false;
      }
      if (hasSkip() != other.hasSkip()) return false;
      if (hasSkip()) {
        if (getSkip()
            != other.getSkip()) return false;
      }
      if (hasSkipdelay() != other.hasSkipdelay()) return false;
      if (hasSkipdelay()) {
        if (getSkipdelay()
            != other.getSkipdelay()) return false;
      }
      if (hasPlacement() != other.hasPlacement()) return false;
      if (hasPlacement()) {
        if (getPlacement()
            != other.getPlacement()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasOrientation()) {
        hash = (37 * hash) + ORIENTATION_FIELD_NUMBER;
        hash = (53 * hash) + getOrientation().hashCode();
      }
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      if (hasAd()) {
        hash = (37 * hash) + AD_FIELD_NUMBER;
        hash = (53 * hash) + getAd().hashCode();
      }
      if (hasSkip()) {
        hash = (37 * hash) + SKIP_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSkip());
      }
      if (hasSkipdelay()) {
        hash = (37 * hash) + SKIPDELAY_FIELD_NUMBER;
        hash = (53 * hash) + getSkipdelay();
      }
      if (hasPlacement()) {
        hash = (37 * hash) + PLACEMENT_FIELD_NUMBER;
        hash = (53 * hash) + getPlacement();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.VideoExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.VideoExt)
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.class, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
          getAdFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        orientation_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (adBuilder_ == null) {
          ad_ = null;
        } else {
          adBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        skip_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        skipdelay_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        placement_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_VideoExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExt result = new com.magnite.openrtb.v2.OpenRtbXapi.VideoExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.orientation_ = orientation_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (adBuilder_ == null) {
            result.ad_ = ad_;
          } else {
            result.ad_ = adBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.skip_ = skip_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.skipdelay_ = skipdelay_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.placement_ = placement_;
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.VideoExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.VideoExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.getDefaultInstance()) return this;
        if (other.hasOrientation()) {
          bitField0_ |= 0x00000001;
          orientation_ = other.orientation_;
          onChanged();
        }
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        if (other.hasAd()) {
          mergeAd(other.getAd());
        }
        if (other.hasSkip()) {
          setSkip(other.getSkip());
        }
        if (other.hasSkipdelay()) {
          setSkipdelay(other.getSkipdelay());
        }
        if (other.hasPlacement()) {
          setPlacement(other.getPlacement());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.VideoExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object orientation_ = "";
      /**
       * <pre>
       * The orientation of the video player, so the buyer can adjust accordingly.
       * Allowed values are "h" (horizontal) and "v" (vertical).
       * </pre>
       *
       * <code>optional string orientation = 1;</code>
       * @return Whether the orientation field is set.
       */
      public boolean hasOrientation() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The orientation of the video player, so the buyer can adjust accordingly.
       * Allowed values are "h" (horizontal) and "v" (vertical).
       * </pre>
       *
       * <code>optional string orientation = 1;</code>
       * @return The orientation.
       */
      public java.lang.String getOrientation() {
        java.lang.Object ref = orientation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            orientation_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The orientation of the video player, so the buyer can adjust accordingly.
       * Allowed values are "h" (horizontal) and "v" (vertical).
       * </pre>
       *
       * <code>optional string orientation = 1;</code>
       * @return The bytes for orientation.
       */
      public com.google.protobuf.ByteString
          getOrientationBytes() {
        java.lang.Object ref = orientation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          orientation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The orientation of the video player, so the buyer can adjust accordingly.
       * Allowed values are "h" (horizontal) and "v" (vertical).
       * </pre>
       *
       * <code>optional string orientation = 1;</code>
       * @param value The orientation to set.
       * @return This builder for chaining.
       */
      public Builder setOrientation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        orientation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The orientation of the video player, so the buyer can adjust accordingly.
       * Allowed values are "h" (horizontal) and "v" (vertical).
       * </pre>
       *
       * <code>optional string orientation = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrientation() {
        bitField0_ = (bitField0_ & ~0x00000001);
        orientation_ = getDefaultInstance().getOrientation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The orientation of the video player, so the buyer can adjust accordingly.
       * Allowed values are "h" (horizontal) and "v" (vertical).
       * </pre>
       *
       * <code>optional string orientation = 1;</code>
       * @param value The bytes for orientation to set.
       * @return This builder for chaining.
       */
      public Builder setOrientationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        orientation_ = value;
        onChanged();
        return this;
      }

      private com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Addtions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Rp rp = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }

      private com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad ad_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.AdOrBuilder> adBuilder_;
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       * @return Whether the ad field is set.
       */
      public boolean hasAd() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       * @return The ad.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad getAd() {
        if (adBuilder_ == null) {
          return ad_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.getDefaultInstance() : ad_;
        } else {
          return adBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       */
      public Builder setAd(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad value) {
        if (adBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ad_ = value;
          onChanged();
        } else {
          adBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       */
      public Builder setAd(
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder builderForValue) {
        if (adBuilder_ == null) {
          ad_ = builderForValue.build();
          onChanged();
        } else {
          adBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       */
      public Builder mergeAd(com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad value) {
        if (adBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              ad_ != null &&
              ad_ != com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.getDefaultInstance()) {
            ad_ =
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.newBuilder(ad_).mergeFrom(value).buildPartial();
          } else {
            ad_ = value;
          }
          onChanged();
        } else {
          adBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       */
      public Builder clearAd() {
        if (adBuilder_ == null) {
          ad_ = null;
          onChanged();
        } else {
          adBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder getAdBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getAdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.AdOrBuilder getAdOrBuilder() {
        if (adBuilder_ != null) {
          return adBuilder_.getMessageOrBuilder();
        } else {
          return ad_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.getDefaultInstance() : ad_;
        }
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.VideoExt.Ad ad = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.AdOrBuilder> 
          getAdFieldBuilder() {
        if (adBuilder_ == null) {
          adBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.Ad.Builder, com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.AdOrBuilder>(
                  getAd(),
                  getParentForChildren(),
                  isClean());
          ad_ = null;
        }
        return adBuilder_;
      }

      private boolean skip_ ;
      /**
       * <pre>
       * DEPRECATED: Use “skip” field from the video object.
       * </pre>
       *
       * <code>optional bool skip = 4;</code>
       * @return Whether the skip field is set.
       */
      @java.lang.Override
      public boolean hasSkip() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * DEPRECATED: Use “skip” field from the video object.
       * </pre>
       *
       * <code>optional bool skip = 4;</code>
       * @return The skip.
       */
      @java.lang.Override
      public boolean getSkip() {
        return skip_;
      }
      /**
       * <pre>
       * DEPRECATED: Use “skip” field from the video object.
       * </pre>
       *
       * <code>optional bool skip = 4;</code>
       * @param value The skip to set.
       * @return This builder for chaining.
       */
      public Builder setSkip(boolean value) {
        bitField0_ |= 0x00000008;
        skip_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DEPRECATED: Use “skip” field from the video object.
       * </pre>
       *
       * <code>optional bool skip = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSkip() {
        bitField0_ = (bitField0_ & ~0x00000008);
        skip_ = false;
        onChanged();
        return this;
      }

      private int skipdelay_ ;
      /**
       * <pre>
       * DEPRECATED: Replaced by “skipafter” in the video object.
       * </pre>
       *
       * <code>optional int32 skipdelay = 5;</code>
       * @return Whether the skipdelay field is set.
       */
      @java.lang.Override
      public boolean hasSkipdelay() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * DEPRECATED: Replaced by “skipafter” in the video object.
       * </pre>
       *
       * <code>optional int32 skipdelay = 5;</code>
       * @return The skipdelay.
       */
      @java.lang.Override
      public int getSkipdelay() {
        return skipdelay_;
      }
      /**
       * <pre>
       * DEPRECATED: Replaced by “skipafter” in the video object.
       * </pre>
       *
       * <code>optional int32 skipdelay = 5;</code>
       * @param value The skipdelay to set.
       * @return This builder for chaining.
       */
      public Builder setSkipdelay(int value) {
        bitField0_ |= 0x00000010;
        skipdelay_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DEPRECATED: Replaced by “skipafter” in the video object.
       * </pre>
       *
       * <code>optional int32 skipdelay = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSkipdelay() {
        bitField0_ = (bitField0_ & ~0x00000010);
        skipdelay_ = 0;
        onChanged();
        return this;
      }

      private int placement_ ;
      /**
       * <pre>
       * Placement type for the impression. Refer to IAB OpenRTB
       * VideoPlacementType enum.
       * </pre>
       *
       * <code>optional int32 placement = 6;</code>
       * @return Whether the placement field is set.
       */
      @java.lang.Override
      public boolean hasPlacement() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Placement type for the impression. Refer to IAB OpenRTB
       * VideoPlacementType enum.
       * </pre>
       *
       * <code>optional int32 placement = 6;</code>
       * @return The placement.
       */
      @java.lang.Override
      public int getPlacement() {
        return placement_;
      }
      /**
       * <pre>
       * Placement type for the impression. Refer to IAB OpenRTB
       * VideoPlacementType enum.
       * </pre>
       *
       * <code>optional int32 placement = 6;</code>
       * @param value The placement to set.
       * @return This builder for chaining.
       */
      public Builder setPlacement(int value) {
        bitField0_ |= 0x00000020;
        placement_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Placement type for the impression. Refer to IAB OpenRTB
       * VideoPlacementType enum.
       * </pre>
       *
       * <code>optional int32 placement = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlacement() {
        bitField0_ = (bitField0_ & ~0x00000020);
        placement_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.VideoExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.VideoExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.VideoExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.VideoExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.VideoExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<VideoExt>
        PARSER = new com.google.protobuf.AbstractParser<VideoExt>() {
      @java.lang.Override
      public VideoExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new VideoExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<VideoExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VideoExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.VideoExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BannerExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BannerExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.BannerExt}
   */
  public static final class BannerExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BannerExt)
      BannerExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BannerExt.newBuilder() to construct.
    private BannerExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BannerExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BannerExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BannerExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BannerExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return Whether the sizeId field is set.
       */
      boolean hasSizeId();
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return The sizeId.
       */
      int getSizeId();

      /**
       * <pre>
       * Alternate size IDs. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>repeated uint32 alt_size_ids = 2;</code>
       * @return A list containing the altSizeIds.
       */
      java.util.List<java.lang.Integer> getAltSizeIdsList();
      /**
       * <pre>
       * Alternate size IDs. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>repeated uint32 alt_size_ids = 2;</code>
       * @return The count of altSizeIds.
       */
      int getAltSizeIdsCount();
      /**
       * <pre>
       * Alternate size IDs. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>repeated uint32 alt_size_ids = 2;</code>
       * @param index The index of the element to return.
       * @return The altSizeIds at the given index.
       */
      int getAltSizeIds(int index);

      /**
       * <pre>
       * Specify the content type of ad markup (“adm” property) in the
       * response. Supported MIME types are “application/javascript” and
       * “text/html”. The default returned format can be specified at
       *integration time. The “text/html” format corresponds to an HTML
       * fragment.
       * </pre>
       *
       * <code>optional string mime = 3;</code>
       * @return Whether the mime field is set.
       */
      boolean hasMime();
      /**
       * <pre>
       * Specify the content type of ad markup (“adm” property) in the
       * response. Supported MIME types are “application/javascript” and
       * “text/html”. The default returned format can be specified at
       *integration time. The “text/html” format corresponds to an HTML
       * fragment.
       * </pre>
       *
       * <code>optional string mime = 3;</code>
       * @return The mime.
       */
      java.lang.String getMime();
      /**
       * <pre>
       * Specify the content type of ad markup (“adm” property) in the
       * response. Supported MIME types are “application/javascript” and
       * “text/html”. The default returned format can be specified at
       *integration time. The “text/html” format corresponds to an HTML
       * fragment.
       * </pre>
       *
       * <code>optional string mime = 3;</code>
       * @return The bytes for mime.
       */
      com.google.protobuf.ByteString
          getMimeBytes();

      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate usage of nurl (Magnite billable pixel) in
       * bid response.
       * </pre>
       *
       * <code>optional bool usenurl = 4;</code>
       * @return Whether the usenurl field is set.
       */
      boolean hasUsenurl();
      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate usage of nurl (Magnite billable pixel) in
       * bid response.
       * </pre>
       *
       * <code>optional bool usenurl = 4;</code>
       * @return The usenurl.
       */
      boolean getUsenurl();

      /**
       * <pre>
       * Flag to indicate usage of imptrackers (DSP impression tracking
       * pixels) in bid response.
       * </pre>
       *
       * <code>optional bool useimptrackers = 5;</code>
       * @return Whether the useimptrackers field is set.
       */
      boolean hasUseimptrackers();
      /**
       * <pre>
       * Flag to indicate usage of imptrackers (DSP impression tracking
       * pixels) in bid response.
       * </pre>
       *
       * <code>optional bool useimptrackers = 5;</code>
       * @return The useimptrackers.
       */
      boolean getUseimptrackers();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BannerExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BannerExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        altSizeIds_ = emptyIntList();
        mime_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                sizeId_ = input.readUInt32();
                break;
              }
              case 16: {
                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                  altSizeIds_ = newIntList();
                  mutable_bitField0_ |= 0x00000002;
                }
                altSizeIds_.addInt(input.readUInt32());
                break;
              }
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
                  altSizeIds_ = newIntList();
                  mutable_bitField0_ |= 0x00000002;
                }
                while (input.getBytesUntilLimit() > 0) {
                  altSizeIds_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                mime_ = bs;
                break;
              }
              case 32: {
                bitField0_ |= 0x00000004;
                usenurl_ = input.readBool();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000008;
                useimptrackers_ = input.readBool();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) != 0)) {
            altSizeIds_.makeImmutable(); // C
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int SIZE_ID_FIELD_NUMBER = 1;
      private int sizeId_;
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return Whether the sizeId field is set.
       */
      @java.lang.Override
      public boolean hasSizeId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return The sizeId.
       */
      @java.lang.Override
      public int getSizeId() {
        return sizeId_;
      }

      public static final int ALT_SIZE_IDS_FIELD_NUMBER = 2;
      private com.google.protobuf.Internal.IntList altSizeIds_;
      /**
       * <pre>
       * Alternate size IDs. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>repeated uint32 alt_size_ids = 2;</code>
       * @return A list containing the altSizeIds.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getAltSizeIdsList() {
        return altSizeIds_;
      }
      /**
       * <pre>
       * Alternate size IDs. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>repeated uint32 alt_size_ids = 2;</code>
       * @return The count of altSizeIds.
       */
      public int getAltSizeIdsCount() {
        return altSizeIds_.size();
      }
      /**
       * <pre>
       * Alternate size IDs. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>repeated uint32 alt_size_ids = 2;</code>
       * @param index The index of the element to return.
       * @return The altSizeIds at the given index.
       */
      public int getAltSizeIds(int index) {
        return altSizeIds_.getInt(index);
      }

      public static final int MIME_FIELD_NUMBER = 3;
      private volatile java.lang.Object mime_;
      /**
       * <pre>
       * Specify the content type of ad markup (“adm” property) in the
       * response. Supported MIME types are “application/javascript” and
       * “text/html”. The default returned format can be specified at
       *integration time. The “text/html” format corresponds to an HTML
       * fragment.
       * </pre>
       *
       * <code>optional string mime = 3;</code>
       * @return Whether the mime field is set.
       */
      @java.lang.Override
      public boolean hasMime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Specify the content type of ad markup (“adm” property) in the
       * response. Supported MIME types are “application/javascript” and
       * “text/html”. The default returned format can be specified at
       *integration time. The “text/html” format corresponds to an HTML
       * fragment.
       * </pre>
       *
       * <code>optional string mime = 3;</code>
       * @return The mime.
       */
      @java.lang.Override
      public java.lang.String getMime() {
        java.lang.Object ref = mime_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mime_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * Specify the content type of ad markup (“adm” property) in the
       * response. Supported MIME types are “application/javascript” and
       * “text/html”. The default returned format can be specified at
       *integration time. The “text/html” format corresponds to an HTML
       * fragment.
       * </pre>
       *
       * <code>optional string mime = 3;</code>
       * @return The bytes for mime.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getMimeBytes() {
        java.lang.Object ref = mime_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mime_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int USENURL_FIELD_NUMBER = 4;
      private boolean usenurl_;
      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate usage of nurl (Magnite billable pixel) in
       * bid response.
       * </pre>
       *
       * <code>optional bool usenurl = 4;</code>
       * @return Whether the usenurl field is set.
       */
      @java.lang.Override
      public boolean hasUsenurl() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * DEPRECATED: NO LONGER SUPPORTED
       * Flag to indicate usage of nurl (Magnite billable pixel) in
       * bid response.
       * </pre>
       *
       * <code>optional bool usenurl = 4;</code>
       * @return The usenurl.
       */
      @java.lang.Override
      public boolean getUsenurl() {
        return usenurl_;
      }

      public static final int USEIMPTRACKERS_FIELD_NUMBER = 5;
      private boolean useimptrackers_;
      /**
       * <pre>
       * Flag to indicate usage of imptrackers (DSP impression tracking
       * pixels) in bid response.
       * </pre>
       *
       * <code>optional bool useimptrackers = 5;</code>
       * @return Whether the useimptrackers field is set.
       */
      @java.lang.Override
      public boolean hasUseimptrackers() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Flag to indicate usage of imptrackers (DSP impression tracking
       * pixels) in bid response.
       * </pre>
       *
       * <code>optional bool useimptrackers = 5;</code>
       * @return The useimptrackers.
       */
      @java.lang.Override
      public boolean getUseimptrackers() {
        return useimptrackers_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt32(1, sizeId_);
        }
        for (int i = 0; i < altSizeIds_.size(); i++) {
          output.writeUInt32(2, altSizeIds_.getInt(i));
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, mime_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeBool(4, usenurl_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeBool(5, useimptrackers_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, sizeId_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < altSizeIds_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(altSizeIds_.getInt(i));
          }
          size += dataSize;
          size += 1 * getAltSizeIdsList().size();
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, mime_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, usenurl_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, useimptrackers_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp) obj;

        if (hasSizeId() != other.hasSizeId()) return false;
        if (hasSizeId()) {
          if (getSizeId()
              != other.getSizeId()) return false;
        }
        if (!getAltSizeIdsList()
            .equals(other.getAltSizeIdsList())) return false;
        if (hasMime() != other.hasMime()) return false;
        if (hasMime()) {
          if (!getMime()
              .equals(other.getMime())) return false;
        }
        if (hasUsenurl() != other.hasUsenurl()) return false;
        if (hasUsenurl()) {
          if (getUsenurl()
              != other.getUsenurl()) return false;
        }
        if (hasUseimptrackers() != other.hasUseimptrackers()) return false;
        if (hasUseimptrackers()) {
          if (getUseimptrackers()
              != other.getUseimptrackers()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSizeId()) {
          hash = (37 * hash) + SIZE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getSizeId();
        }
        if (getAltSizeIdsCount() > 0) {
          hash = (37 * hash) + ALT_SIZE_IDS_FIELD_NUMBER;
          hash = (53 * hash) + getAltSizeIdsList().hashCode();
        }
        if (hasMime()) {
          hash = (37 * hash) + MIME_FIELD_NUMBER;
          hash = (53 * hash) + getMime().hashCode();
        }
        if (hasUsenurl()) {
          hash = (37 * hash) + USENURL_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getUsenurl());
        }
        if (hasUseimptrackers()) {
          hash = (37 * hash) + USEIMPTRACKERS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getUseimptrackers());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.BannerExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BannerExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          sizeId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          altSizeIds_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          mime_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          usenurl_ = false;
          bitField0_ = (bitField0_ & ~0x00000008);
          useimptrackers_ = false;
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.sizeId_ = sizeId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((bitField0_ & 0x00000002) != 0)) {
            altSizeIds_.makeImmutable();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.altSizeIds_ = altSizeIds_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.mime_ = mime_;
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.usenurl_ = usenurl_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.useimptrackers_ = useimptrackers_;
            to_bitField0_ |= 0x00000008;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.getDefaultInstance()) return this;
          if (other.hasSizeId()) {
            setSizeId(other.getSizeId());
          }
          if (!other.altSizeIds_.isEmpty()) {
            if (altSizeIds_.isEmpty()) {
              altSizeIds_ = other.altSizeIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAltSizeIdsIsMutable();
              altSizeIds_.addAll(other.altSizeIds_);
            }
            onChanged();
          }
          if (other.hasMime()) {
            bitField0_ |= 0x00000004;
            mime_ = other.mime_;
            onChanged();
          }
          if (other.hasUsenurl()) {
            setUsenurl(other.getUsenurl());
          }
          if (other.hasUseimptrackers()) {
            setUseimptrackers(other.getUseimptrackers());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int sizeId_ ;
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return Whether the sizeId field is set.
         */
        @java.lang.Override
        public boolean hasSizeId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return The sizeId.
         */
        @java.lang.Override
        public int getSizeId() {
          return sizeId_;
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @param value The sizeId to set.
         * @return This builder for chaining.
         */
        public Builder setSizeId(int value) {
          bitField0_ |= 0x00000001;
          sizeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSizeId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sizeId_ = 0;
          onChanged();
          return this;
        }

        private com.google.protobuf.Internal.IntList altSizeIds_ = emptyIntList();
        private void ensureAltSizeIdsIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            altSizeIds_ = mutableCopy(altSizeIds_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <pre>
         * Alternate size IDs. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>repeated uint32 alt_size_ids = 2;</code>
         * @return A list containing the altSizeIds.
         */
        public java.util.List<java.lang.Integer>
            getAltSizeIdsList() {
          return ((bitField0_ & 0x00000002) != 0) ?
                   java.util.Collections.unmodifiableList(altSizeIds_) : altSizeIds_;
        }
        /**
         * <pre>
         * Alternate size IDs. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>repeated uint32 alt_size_ids = 2;</code>
         * @return The count of altSizeIds.
         */
        public int getAltSizeIdsCount() {
          return altSizeIds_.size();
        }
        /**
         * <pre>
         * Alternate size IDs. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>repeated uint32 alt_size_ids = 2;</code>
         * @param index The index of the element to return.
         * @return The altSizeIds at the given index.
         */
        public int getAltSizeIds(int index) {
          return altSizeIds_.getInt(index);
        }
        /**
         * <pre>
         * Alternate size IDs. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>repeated uint32 alt_size_ids = 2;</code>
         * @param index The index to set the value at.
         * @param value The altSizeIds to set.
         * @return This builder for chaining.
         */
        public Builder setAltSizeIds(
            int index, int value) {
          ensureAltSizeIdsIsMutable();
          altSizeIds_.setInt(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Alternate size IDs. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>repeated uint32 alt_size_ids = 2;</code>
         * @param value The altSizeIds to add.
         * @return This builder for chaining.
         */
        public Builder addAltSizeIds(int value) {
          ensureAltSizeIdsIsMutable();
          altSizeIds_.addInt(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Alternate size IDs. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>repeated uint32 alt_size_ids = 2;</code>
         * @param values The altSizeIds to add.
         * @return This builder for chaining.
         */
        public Builder addAllAltSizeIds(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureAltSizeIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, altSizeIds_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Alternate size IDs. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>repeated uint32 alt_size_ids = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearAltSizeIds() {
          altSizeIds_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }

        private java.lang.Object mime_ = "";
        /**
         * <pre>
         * Specify the content type of ad markup (“adm” property) in the
         * response. Supported MIME types are “application/javascript” and
         * “text/html”. The default returned format can be specified at
         *integration time. The “text/html” format corresponds to an HTML
         * fragment.
         * </pre>
         *
         * <code>optional string mime = 3;</code>
         * @return Whether the mime field is set.
         */
        public boolean hasMime() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * Specify the content type of ad markup (“adm” property) in the
         * response. Supported MIME types are “application/javascript” and
         * “text/html”. The default returned format can be specified at
         *integration time. The “text/html” format corresponds to an HTML
         * fragment.
         * </pre>
         *
         * <code>optional string mime = 3;</code>
         * @return The mime.
         */
        public java.lang.String getMime() {
          java.lang.Object ref = mime_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              mime_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Specify the content type of ad markup (“adm” property) in the
         * response. Supported MIME types are “application/javascript” and
         * “text/html”. The default returned format can be specified at
         *integration time. The “text/html” format corresponds to an HTML
         * fragment.
         * </pre>
         *
         * <code>optional string mime = 3;</code>
         * @return The bytes for mime.
         */
        public com.google.protobuf.ByteString
            getMimeBytes() {
          java.lang.Object ref = mime_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            mime_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Specify the content type of ad markup (“adm” property) in the
         * response. Supported MIME types are “application/javascript” and
         * “text/html”. The default returned format can be specified at
         *integration time. The “text/html” format corresponds to an HTML
         * fragment.
         * </pre>
         *
         * <code>optional string mime = 3;</code>
         * @param value The mime to set.
         * @return This builder for chaining.
         */
        public Builder setMime(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          mime_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Specify the content type of ad markup (“adm” property) in the
         * response. Supported MIME types are “application/javascript” and
         * “text/html”. The default returned format can be specified at
         *integration time. The “text/html” format corresponds to an HTML
         * fragment.
         * </pre>
         *
         * <code>optional string mime = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearMime() {
          bitField0_ = (bitField0_ & ~0x00000004);
          mime_ = getDefaultInstance().getMime();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Specify the content type of ad markup (“adm” property) in the
         * response. Supported MIME types are “application/javascript” and
         * “text/html”. The default returned format can be specified at
         *integration time. The “text/html” format corresponds to an HTML
         * fragment.
         * </pre>
         *
         * <code>optional string mime = 3;</code>
         * @param value The bytes for mime to set.
         * @return This builder for chaining.
         */
        public Builder setMimeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          mime_ = value;
          onChanged();
          return this;
        }

        private boolean usenurl_ ;
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate usage of nurl (Magnite billable pixel) in
         * bid response.
         * </pre>
         *
         * <code>optional bool usenurl = 4;</code>
         * @return Whether the usenurl field is set.
         */
        @java.lang.Override
        public boolean hasUsenurl() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate usage of nurl (Magnite billable pixel) in
         * bid response.
         * </pre>
         *
         * <code>optional bool usenurl = 4;</code>
         * @return The usenurl.
         */
        @java.lang.Override
        public boolean getUsenurl() {
          return usenurl_;
        }
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate usage of nurl (Magnite billable pixel) in
         * bid response.
         * </pre>
         *
         * <code>optional bool usenurl = 4;</code>
         * @param value The usenurl to set.
         * @return This builder for chaining.
         */
        public Builder setUsenurl(boolean value) {
          bitField0_ |= 0x00000008;
          usenurl_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DEPRECATED: NO LONGER SUPPORTED
         * Flag to indicate usage of nurl (Magnite billable pixel) in
         * bid response.
         * </pre>
         *
         * <code>optional bool usenurl = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearUsenurl() {
          bitField0_ = (bitField0_ & ~0x00000008);
          usenurl_ = false;
          onChanged();
          return this;
        }

        private boolean useimptrackers_ ;
        /**
         * <pre>
         * Flag to indicate usage of imptrackers (DSP impression tracking
         * pixels) in bid response.
         * </pre>
         *
         * <code>optional bool useimptrackers = 5;</code>
         * @return Whether the useimptrackers field is set.
         */
        @java.lang.Override
        public boolean hasUseimptrackers() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <pre>
         * Flag to indicate usage of imptrackers (DSP impression tracking
         * pixels) in bid response.
         * </pre>
         *
         * <code>optional bool useimptrackers = 5;</code>
         * @return The useimptrackers.
         */
        @java.lang.Override
        public boolean getUseimptrackers() {
          return useimptrackers_;
        }
        /**
         * <pre>
         * Flag to indicate usage of imptrackers (DSP impression tracking
         * pixels) in bid response.
         * </pre>
         *
         * <code>optional bool useimptrackers = 5;</code>
         * @param value The useimptrackers to set.
         * @return This builder for chaining.
         */
        public Builder setUseimptrackers(boolean value) {
          bitField0_ |= 0x00000010;
          useimptrackers_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Flag to indicate usage of imptrackers (DSP impression tracking
         * pixels) in bid response.
         * </pre>
         *
         * <code>optional bool useimptrackers = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearUseimptrackers() {
          bitField0_ = (bitField0_ & ~0x00000010);
          useimptrackers_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BannerExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BannerExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BannerExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.BannerExt other = (com.magnite.openrtb.v2.OpenRtbXapi.BannerExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BannerExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BannerExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BannerExt)
        com.magnite.openrtb.v2.OpenRtbXapi.BannerExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BannerExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.BannerExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.BannerExt result = new com.magnite.openrtb.v2.OpenRtbXapi.BannerExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BannerExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BannerExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BannerExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.BannerExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BannerExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BannerExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BannerExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BannerExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.BannerExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BannerExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BannerExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BannerExt>
        PARSER = new com.google.protobuf.AbstractParser<BannerExt>() {
      @java.lang.Override
      public BannerExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BannerExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BannerExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BannerExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BannerExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AdQualityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.AdQuality)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Signal the sensitivity of this slot to ad quality. Allowed values are
     * "high" (which results in the blocking of creatives that have been
     * tagged as low-quality), or "low".
     * </pre>
     *
     * <code>optional string sensitivity = 1;</code>
     * @return Whether the sensitivity field is set.
     */
    boolean hasSensitivity();
    /**
     * <pre>
     * Signal the sensitivity of this slot to ad quality. Allowed values are
     * "high" (which results in the blocking of creatives that have been
     * tagged as low-quality), or "low".
     * </pre>
     *
     * <code>optional string sensitivity = 1;</code>
     * @return The sensitivity.
     */
    java.lang.String getSensitivity();
    /**
     * <pre>
     * Signal the sensitivity of this slot to ad quality. Allowed values are
     * "high" (which results in the blocking of creatives that have been
     * tagged as low-quality), or "low".
     * </pre>
     *
     * <code>optional string sensitivity = 1;</code>
     * @return The bytes for sensitivity.
     */
    com.google.protobuf.ByteString
        getSensitivityBytes();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.AdQuality}
   */
  public static final class AdQuality extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.AdQuality)
      AdQualityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AdQuality.newBuilder() to construct.
    private AdQuality(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AdQuality() {
      sensitivity_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AdQuality();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AdQuality(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              sensitivity_ = bs;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AdQuality_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AdQuality_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.class, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder.class);
    }

    private int bitField0_;
    public static final int SENSITIVITY_FIELD_NUMBER = 1;
    private volatile java.lang.Object sensitivity_;
    /**
     * <pre>
     * Signal the sensitivity of this slot to ad quality. Allowed values are
     * "high" (which results in the blocking of creatives that have been
     * tagged as low-quality), or "low".
     * </pre>
     *
     * <code>optional string sensitivity = 1;</code>
     * @return Whether the sensitivity field is set.
     */
    @java.lang.Override
    public boolean hasSensitivity() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Signal the sensitivity of this slot to ad quality. Allowed values are
     * "high" (which results in the blocking of creatives that have been
     * tagged as low-quality), or "low".
     * </pre>
     *
     * <code>optional string sensitivity = 1;</code>
     * @return The sensitivity.
     */
    @java.lang.Override
    public java.lang.String getSensitivity() {
      java.lang.Object ref = sensitivity_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sensitivity_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Signal the sensitivity of this slot to ad quality. Allowed values are
     * "high" (which results in the blocking of creatives that have been
     * tagged as low-quality), or "low".
     * </pre>
     *
     * <code>optional string sensitivity = 1;</code>
     * @return The bytes for sensitivity.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSensitivityBytes() {
      java.lang.Object ref = sensitivity_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sensitivity_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sensitivity_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sensitivity_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.AdQuality)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.AdQuality other = (com.magnite.openrtb.v2.OpenRtbXapi.AdQuality) obj;

      if (hasSensitivity() != other.hasSensitivity()) return false;
      if (hasSensitivity()) {
        if (!getSensitivity()
            .equals(other.getSensitivity())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSensitivity()) {
        hash = (37 * hash) + SENSITIVITY_FIELD_NUMBER;
        hash = (53 * hash) + getSensitivity().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.AdQuality}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.AdQuality)
        com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AdQuality_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AdQuality_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.class, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sensitivity_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AdQuality_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality build() {
        com.magnite.openrtb.v2.OpenRtbXapi.AdQuality result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.AdQuality result = new com.magnite.openrtb.v2.OpenRtbXapi.AdQuality(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.sensitivity_ = sensitivity_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.AdQuality) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.AdQuality)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance()) return this;
        if (other.hasSensitivity()) {
          bitField0_ |= 0x00000001;
          sensitivity_ = other.sensitivity_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.AdQuality parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.AdQuality) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object sensitivity_ = "";
      /**
       * <pre>
       * Signal the sensitivity of this slot to ad quality. Allowed values are
       * "high" (which results in the blocking of creatives that have been
       * tagged as low-quality), or "low".
       * </pre>
       *
       * <code>optional string sensitivity = 1;</code>
       * @return Whether the sensitivity field is set.
       */
      public boolean hasSensitivity() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Signal the sensitivity of this slot to ad quality. Allowed values are
       * "high" (which results in the blocking of creatives that have been
       * tagged as low-quality), or "low".
       * </pre>
       *
       * <code>optional string sensitivity = 1;</code>
       * @return The sensitivity.
       */
      public java.lang.String getSensitivity() {
        java.lang.Object ref = sensitivity_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sensitivity_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Signal the sensitivity of this slot to ad quality. Allowed values are
       * "high" (which results in the blocking of creatives that have been
       * tagged as low-quality), or "low".
       * </pre>
       *
       * <code>optional string sensitivity = 1;</code>
       * @return The bytes for sensitivity.
       */
      public com.google.protobuf.ByteString
          getSensitivityBytes() {
        java.lang.Object ref = sensitivity_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sensitivity_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Signal the sensitivity of this slot to ad quality. Allowed values are
       * "high" (which results in the blocking of creatives that have been
       * tagged as low-quality), or "low".
       * </pre>
       *
       * <code>optional string sensitivity = 1;</code>
       * @param value The sensitivity to set.
       * @return This builder for chaining.
       */
      public Builder setSensitivity(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sensitivity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Signal the sensitivity of this slot to ad quality. Allowed values are
       * "high" (which results in the blocking of creatives that have been
       * tagged as low-quality), or "low".
       * </pre>
       *
       * <code>optional string sensitivity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSensitivity() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sensitivity_ = getDefaultInstance().getSensitivity();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Signal the sensitivity of this slot to ad quality. Allowed values are
       * "high" (which results in the blocking of creatives that have been
       * tagged as low-quality), or "low".
       * </pre>
       *
       * <code>optional string sensitivity = 1;</code>
       * @param value The bytes for sensitivity to set.
       * @return This builder for chaining.
       */
      public Builder setSensitivityBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        sensitivity_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.AdQuality)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.AdQuality)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.AdQuality DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.AdQuality();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<AdQuality>
        PARSER = new com.google.protobuf.AbstractParser<AdQuality>() {
      @java.lang.Override
      public AdQuality parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AdQuality(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<AdQuality> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AdQuality> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AppExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.AppExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.AppExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.AppExt}
   */
  public static final class AppExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.AppExt)
      AppExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AppExt.newBuilder() to construct.
    private AppExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AppExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AppExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AppExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.AppExt.class, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.AppExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return Whether the siteId field is set.
       */
      boolean hasSiteId();
      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return The siteId.
       */
      int getSiteId();

      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return Whether the aq field is set.
       */
      boolean hasAq();
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return The aq.
       */
      com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getAq();
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder getAqOrBuilder();

      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return A list containing the blocklists.
       */
      java.util.List<java.lang.String>
          getBlocklistsList();
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return The count of blocklists.
       */
      int getBlocklistsCount();
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the element to return.
       * @return The blocklists at the given index.
       */
      java.lang.String getBlocklists(int index);
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the blocklists at the given index.
       */
      com.google.protobuf.ByteString
          getBlocklistsBytes(int index);
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.AppExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.AppExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                siteId_ = input.readUInt32();
                break;
              }
              case 18: {
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) != 0)) {
                  subBuilder = aq_.toBuilder();
                }
                aq_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(aq_);
                  aq_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                  blocklists_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                blocklists_.add(bs);
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) != 0)) {
            blocklists_ = blocklists_.getUnmodifiableView();
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int SITE_ID_FIELD_NUMBER = 1;
      private int siteId_;
      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return Whether the siteId field is set.
       */
      @java.lang.Override
      public boolean hasSiteId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return The siteId.
       */
      @java.lang.Override
      public int getSiteId() {
        return siteId_;
      }

      public static final int AQ_FIELD_NUMBER = 2;
      private com.magnite.openrtb.v2.OpenRtbXapi.AdQuality aq_;
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return Whether the aq field is set.
       */
      @java.lang.Override
      public boolean hasAq() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return The aq.
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getAq() {
        return aq_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
      }
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder getAqOrBuilder() {
        return aq_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
      }

      public static final int BLOCKLISTS_FIELD_NUMBER = 3;
      private com.google.protobuf.LazyStringList blocklists_;
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return A list containing the blocklists.
       */
      public com.google.protobuf.ProtocolStringList
          getBlocklistsList() {
        return blocklists_;
      }
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return The count of blocklists.
       */
      public int getBlocklistsCount() {
        return blocklists_.size();
      }
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the element to return.
       * @return The blocklists at the given index.
       */
      public java.lang.String getBlocklists(int index) {
        return blocklists_.get(index);
      }
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the blocklists at the given index.
       */
      public com.google.protobuf.ByteString
          getBlocklistsBytes(int index) {
        return blocklists_.getByteString(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt32(1, siteId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeMessage(2, getAq());
        }
        for (int i = 0; i < blocklists_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, blocklists_.getRaw(i));
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, siteId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getAq());
        }
        {
          int dataSize = 0;
          for (int i = 0; i < blocklists_.size(); i++) {
            dataSize += computeStringSizeNoTag(blocklists_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getBlocklistsList().size();
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp) obj;

        if (hasSiteId() != other.hasSiteId()) return false;
        if (hasSiteId()) {
          if (getSiteId()
              != other.getSiteId()) return false;
        }
        if (hasAq() != other.hasAq()) return false;
        if (hasAq()) {
          if (!getAq()
              .equals(other.getAq())) return false;
        }
        if (!getBlocklistsList()
            .equals(other.getBlocklistsList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSiteId()) {
          hash = (37 * hash) + SITE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getSiteId();
        }
        if (hasAq()) {
          hash = (37 * hash) + AQ_FIELD_NUMBER;
          hash = (53 * hash) + getAq().hashCode();
        }
        if (getBlocklistsCount() > 0) {
          hash = (37 * hash) + BLOCKLISTS_FIELD_NUMBER;
          hash = (53 * hash) + getBlocklistsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.AppExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.AppExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.AppExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getAqFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          siteId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (aqBuilder_ == null) {
            aq_ = null;
          } else {
            aqBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.siteId_ = siteId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            if (aqBuilder_ == null) {
              result.aq_ = aq_;
            } else {
              result.aq_ = aqBuilder_.build();
            }
            to_bitField0_ |= 0x00000002;
          }
          if (((bitField0_ & 0x00000004) != 0)) {
            blocklists_ = blocklists_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.blocklists_ = blocklists_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.getDefaultInstance()) return this;
          if (other.hasSiteId()) {
            setSiteId(other.getSiteId());
          }
          if (other.hasAq()) {
            mergeAq(other.getAq());
          }
          if (!other.blocklists_.isEmpty()) {
            if (blocklists_.isEmpty()) {
              blocklists_ = other.blocklists_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureBlocklistsIsMutable();
              blocklists_.addAll(other.blocklists_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int siteId_ ;
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @return Whether the siteId field is set.
         */
        @java.lang.Override
        public boolean hasSiteId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @return The siteId.
         */
        @java.lang.Override
        public int getSiteId() {
          return siteId_;
        }
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @param value The siteId to set.
         * @return This builder for chaining.
         */
        public Builder setSiteId(int value) {
          bitField0_ |= 0x00000001;
          siteId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSiteId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          siteId_ = 0;
          onChanged();
          return this;
        }

        private com.magnite.openrtb.v2.OpenRtbXapi.AdQuality aq_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.AdQuality, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder> aqBuilder_;
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         * @return Whether the aq field is set.
         */
        public boolean hasAq() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         * @return The aq.
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getAq() {
          if (aqBuilder_ == null) {
            return aq_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
          } else {
            return aqBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder setAq(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality value) {
          if (aqBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            aq_ = value;
            onChanged();
          } else {
            aqBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder setAq(
            com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder builderForValue) {
          if (aqBuilder_ == null) {
            aq_ = builderForValue.build();
            onChanged();
          } else {
            aqBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder mergeAq(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality value) {
          if (aqBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
                aq_ != null &&
                aq_ != com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance()) {
              aq_ =
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.newBuilder(aq_).mergeFrom(value).buildPartial();
            } else {
              aq_ = value;
            }
            onChanged();
          } else {
            aqBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder clearAq() {
          if (aqBuilder_ == null) {
            aq_ = null;
            onChanged();
          } else {
            aqBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder getAqBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getAqFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder getAqOrBuilder() {
          if (aqBuilder_ != null) {
            return aqBuilder_.getMessageOrBuilder();
          } else {
            return aq_ == null ?
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
          }
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.AdQuality, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder> 
            getAqFieldBuilder() {
          if (aqBuilder_ == null) {
            aqBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder>(
                    getAq(),
                    getParentForChildren(),
                    isClean());
            aq_ = null;
          }
          return aqBuilder_;
        }

        private com.google.protobuf.LazyStringList blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureBlocklistsIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            blocklists_ = new com.google.protobuf.LazyStringArrayList(blocklists_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @return A list containing the blocklists.
         */
        public com.google.protobuf.ProtocolStringList
            getBlocklistsList() {
          return blocklists_.getUnmodifiableView();
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @return The count of blocklists.
         */
        public int getBlocklistsCount() {
          return blocklists_.size();
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param index The index of the element to return.
         * @return The blocklists at the given index.
         */
        public java.lang.String getBlocklists(int index) {
          return blocklists_.get(index);
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param index The index of the value to return.
         * @return The bytes of the blocklists at the given index.
         */
        public com.google.protobuf.ByteString
            getBlocklistsBytes(int index) {
          return blocklists_.getByteString(index);
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param index The index to set the value at.
         * @param value The blocklists to set.
         * @return This builder for chaining.
         */
        public Builder setBlocklists(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureBlocklistsIsMutable();
          blocklists_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param value The blocklists to add.
         * @return This builder for chaining.
         */
        public Builder addBlocklists(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureBlocklistsIsMutable();
          blocklists_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param values The blocklists to add.
         * @return This builder for chaining.
         */
        public Builder addAllBlocklists(
            java.lang.Iterable<java.lang.String> values) {
          ensureBlocklistsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, blocklists_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearBlocklists() {
          blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param value The bytes of the blocklists to add.
         * @return This builder for chaining.
         */
        public Builder addBlocklistsBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureBlocklistsIsMutable();
          blocklists_.add(value);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.AppExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.AppExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.AppExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.AppExt other = (com.magnite.openrtb.v2.OpenRtbXapi.AppExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.AppExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.AppExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.AppExt)
        com.magnite.openrtb.v2.OpenRtbXapi.AppExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.AppExt.class, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.AppExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_AppExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AppExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.AppExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AppExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.AppExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AppExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.AppExt result = new com.magnite.openrtb.v2.OpenRtbXapi.AppExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.AppExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.AppExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.AppExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.AppExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.AppExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.AppExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.AppExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AppExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AppExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.AppExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.AppExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.AppExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.AppExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.AppExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<AppExt>
        PARSER = new com.google.protobuf.AbstractParser<AppExt>() {
      @java.lang.Override
      public AppExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AppExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<AppExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AppExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.AppExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SiteExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.SiteExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.RpOrBuilder getRpOrBuilder();

    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return Whether the window field is set.
     */
    boolean hasWindow();
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return The window.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.Window getWindow();
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder getWindowOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.SiteExt}
   */
  public static final class SiteExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.SiteExt)
      SiteExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SiteExt.newBuilder() to construct.
    private SiteExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SiteExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SiteExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SiteExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = window_.toBuilder();
              }
              window_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.Window.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(window_);
                window_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.class, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.SiteExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return Whether the siteId field is set.
       */
      boolean hasSiteId();
      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return The siteId.
       */
      int getSiteId();

      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return Whether the aq field is set.
       */
      boolean hasAq();
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return The aq.
       */
      com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getAq();
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder getAqOrBuilder();

      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return A list containing the blocklists.
       */
      java.util.List<java.lang.String>
          getBlocklistsList();
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return The count of blocklists.
       */
      int getBlocklistsCount();
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the element to return.
       * @return The blocklists at the given index.
       */
      java.lang.String getBlocklists(int index);
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the blocklists at the given index.
       */
      com.google.protobuf.ByteString
          getBlocklistsBytes(int index);
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.SiteExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.SiteExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                siteId_ = input.readUInt32();
                break;
              }
              case 18: {
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) != 0)) {
                  subBuilder = aq_.toBuilder();
                }
                aq_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(aq_);
                  aq_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                  blocklists_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                blocklists_.add(bs);
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) != 0)) {
            blocklists_ = blocklists_.getUnmodifiableView();
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int SITE_ID_FIELD_NUMBER = 1;
      private int siteId_;
      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return Whether the siteId field is set.
       */
      @java.lang.Override
      public boolean hasSiteId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ site ID.
       * </pre>
       *
       * <code>optional uint32 site_id = 1;</code>
       * @return The siteId.
       */
      @java.lang.Override
      public int getSiteId() {
        return siteId_;
      }

      public static final int AQ_FIELD_NUMBER = 2;
      private com.magnite.openrtb.v2.OpenRtbXapi.AdQuality aq_;
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return Whether the aq field is set.
       */
      @java.lang.Override
      public boolean hasAq() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       * @return The aq.
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getAq() {
        return aq_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
      }
      /**
       * <pre>
       * Our Creative Audit process allows for the caller to tag creatives in
       * our responses as high or low quality and then, at request time,
       * specify limitations on which of these creatives are allowed to serve.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder getAqOrBuilder() {
        return aq_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
      }

      public static final int BLOCKLISTS_FIELD_NUMBER = 3;
      private com.google.protobuf.LazyStringList blocklists_;
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return A list containing the blocklists.
       */
      public com.google.protobuf.ProtocolStringList
          getBlocklistsList() {
        return blocklists_;
      }
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @return The count of blocklists.
       */
      public int getBlocklistsCount() {
        return blocklists_.size();
      }
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the element to return.
       * @return The blocklists at the given index.
       */
      public java.lang.String getBlocklists(int index) {
        return blocklists_.get(index);
      }
      /**
       * <pre>
       * An array of string identifiers denoting the advertiser blocklist
       * relevant for this impression. See the DV+ Blocklist API for details:
       * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
       * </pre>
       *
       * <code>repeated string blocklists = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the blocklists at the given index.
       */
      public com.google.protobuf.ByteString
          getBlocklistsBytes(int index) {
        return blocklists_.getByteString(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt32(1, siteId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeMessage(2, getAq());
        }
        for (int i = 0; i < blocklists_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, blocklists_.getRaw(i));
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, siteId_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getAq());
        }
        {
          int dataSize = 0;
          for (int i = 0; i < blocklists_.size(); i++) {
            dataSize += computeStringSizeNoTag(blocklists_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getBlocklistsList().size();
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp) obj;

        if (hasSiteId() != other.hasSiteId()) return false;
        if (hasSiteId()) {
          if (getSiteId()
              != other.getSiteId()) return false;
        }
        if (hasAq() != other.hasAq()) return false;
        if (hasAq()) {
          if (!getAq()
              .equals(other.getAq())) return false;
        }
        if (!getBlocklistsList()
            .equals(other.getBlocklistsList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSiteId()) {
          hash = (37 * hash) + SITE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getSiteId();
        }
        if (hasAq()) {
          hash = (37 * hash) + AQ_FIELD_NUMBER;
          hash = (53 * hash) + getAq().hashCode();
        }
        if (getBlocklistsCount() > 0) {
          hash = (37 * hash) + BLOCKLISTS_FIELD_NUMBER;
          hash = (53 * hash) + getBlocklistsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.SiteExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.SiteExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getAqFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          siteId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (aqBuilder_ == null) {
            aq_ = null;
          } else {
            aqBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.siteId_ = siteId_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            if (aqBuilder_ == null) {
              result.aq_ = aq_;
            } else {
              result.aq_ = aqBuilder_.build();
            }
            to_bitField0_ |= 0x00000002;
          }
          if (((bitField0_ & 0x00000004) != 0)) {
            blocklists_ = blocklists_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.blocklists_ = blocklists_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.getDefaultInstance()) return this;
          if (other.hasSiteId()) {
            setSiteId(other.getSiteId());
          }
          if (other.hasAq()) {
            mergeAq(other.getAq());
          }
          if (!other.blocklists_.isEmpty()) {
            if (blocklists_.isEmpty()) {
              blocklists_ = other.blocklists_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureBlocklistsIsMutable();
              blocklists_.addAll(other.blocklists_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int siteId_ ;
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @return Whether the siteId field is set.
         */
        @java.lang.Override
        public boolean hasSiteId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @return The siteId.
         */
        @java.lang.Override
        public int getSiteId() {
          return siteId_;
        }
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @param value The siteId to set.
         * @return This builder for chaining.
         */
        public Builder setSiteId(int value) {
          bitField0_ |= 0x00000001;
          siteId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ site ID.
         * </pre>
         *
         * <code>optional uint32 site_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSiteId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          siteId_ = 0;
          onChanged();
          return this;
        }

        private com.magnite.openrtb.v2.OpenRtbXapi.AdQuality aq_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.AdQuality, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder> aqBuilder_;
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         * @return Whether the aq field is set.
         */
        public boolean hasAq() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         * @return The aq.
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality getAq() {
          if (aqBuilder_ == null) {
            return aq_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
          } else {
            return aqBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder setAq(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality value) {
          if (aqBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            aq_ = value;
            onChanged();
          } else {
            aqBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder setAq(
            com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder builderForValue) {
          if (aqBuilder_ == null) {
            aq_ = builderForValue.build();
            onChanged();
          } else {
            aqBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder mergeAq(com.magnite.openrtb.v2.OpenRtbXapi.AdQuality value) {
          if (aqBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
                aq_ != null &&
                aq_ != com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance()) {
              aq_ =
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.newBuilder(aq_).mergeFrom(value).buildPartial();
            } else {
              aq_ = value;
            }
            onChanged();
          } else {
            aqBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public Builder clearAq() {
          if (aqBuilder_ == null) {
            aq_ = null;
            onChanged();
          } else {
            aqBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder getAqBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getAqFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder getAqOrBuilder() {
          if (aqBuilder_ != null) {
            return aqBuilder_.getMessageOrBuilder();
          } else {
            return aq_ == null ?
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.getDefaultInstance() : aq_;
          }
        }
        /**
         * <pre>
         * Our Creative Audit process allows for the caller to tag creatives in
         * our responses as high or low quality and then, at request time,
         * specify limitations on which of these creatives are allowed to serve.
         * </pre>
         *
         * <code>optional .com.magnite.openrtb.v2.AdQuality aq = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.AdQuality, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder> 
            getAqFieldBuilder() {
          if (aqBuilder_ == null) {
            aqBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.AdQuality, com.magnite.openrtb.v2.OpenRtbXapi.AdQuality.Builder, com.magnite.openrtb.v2.OpenRtbXapi.AdQualityOrBuilder>(
                    getAq(),
                    getParentForChildren(),
                    isClean());
            aq_ = null;
          }
          return aqBuilder_;
        }

        private com.google.protobuf.LazyStringList blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureBlocklistsIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            blocklists_ = new com.google.protobuf.LazyStringArrayList(blocklists_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @return A list containing the blocklists.
         */
        public com.google.protobuf.ProtocolStringList
            getBlocklistsList() {
          return blocklists_.getUnmodifiableView();
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @return The count of blocklists.
         */
        public int getBlocklistsCount() {
          return blocklists_.size();
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param index The index of the element to return.
         * @return The blocklists at the given index.
         */
        public java.lang.String getBlocklists(int index) {
          return blocklists_.get(index);
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param index The index of the value to return.
         * @return The bytes of the blocklists at the given index.
         */
        public com.google.protobuf.ByteString
            getBlocklistsBytes(int index) {
          return blocklists_.getByteString(index);
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param index The index to set the value at.
         * @param value The blocklists to set.
         * @return This builder for chaining.
         */
        public Builder setBlocklists(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureBlocklistsIsMutable();
          blocklists_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param value The blocklists to add.
         * @return This builder for chaining.
         */
        public Builder addBlocklists(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureBlocklistsIsMutable();
          blocklists_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param values The blocklists to add.
         * @return This builder for chaining.
         */
        public Builder addAllBlocklists(
            java.lang.Iterable<java.lang.String> values) {
          ensureBlocklistsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, blocklists_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearBlocklists() {
          blocklists_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An array of string identifiers denoting the advertiser blocklist
         * relevant for this impression. See the DV+ Blocklist API for details:
         * https://resources.rubiconproject.com/resource/publisher-resources/knowledge-base/blocklist-sync-api.
         * </pre>
         *
         * <code>repeated string blocklists = 3;</code>
         * @param value The bytes of the blocklists to add.
         * @return This builder for chaining.
         */
        public Builder addBlocklistsBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureBlocklistsIsMutable();
          blocklists_.add(value);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.SiteExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.SiteExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.getDefaultInstance() : rp_;
    }

    public static final int WINDOW_FIELD_NUMBER = 2;
    private com.magnite.openrtb.v2.OpenRtbXapi.Window window_;
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return Whether the window field is set.
     */
    @java.lang.Override
    public boolean hasWindow() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     * @return The window.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.Window getWindow() {
      return window_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
    }
    /**
     * <pre>
     * For greater transparency around video inventory, some buyers require this
     * additional data relating to the content and the video player.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder getWindowOrBuilder() {
      return window_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getWindow());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getWindow());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.SiteExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.SiteExt other = (com.magnite.openrtb.v2.OpenRtbXapi.SiteExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (hasWindow() != other.hasWindow()) return false;
      if (hasWindow()) {
        if (!getWindow()
            .equals(other.getWindow())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      if (hasWindow()) {
        hash = (37 * hash) + WINDOW_FIELD_NUMBER;
        hash = (53 * hash) + getWindow().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.SiteExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.SiteExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.SiteExt)
        com.magnite.openrtb.v2.OpenRtbXapi.SiteExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.class, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
          getWindowFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (windowBuilder_ == null) {
          window_ = null;
        } else {
          windowBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SiteExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.SiteExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.SiteExt result = new com.magnite.openrtb.v2.OpenRtbXapi.SiteExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (windowBuilder_ == null) {
            result.window_ = window_;
          } else {
            result.window_ = windowBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.SiteExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.SiteExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.SiteExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        if (other.hasWindow()) {
          mergeWindow(other.getWindow());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.SiteExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.SiteExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SiteExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }

      private com.magnite.openrtb.v2.OpenRtbXapi.Window window_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.Window, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder, com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder> windowBuilder_;
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       * @return Whether the window field is set.
       */
      public boolean hasWindow() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       * @return The window.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.Window getWindow() {
        if (windowBuilder_ == null) {
          return window_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
        } else {
          return windowBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder setWindow(com.magnite.openrtb.v2.OpenRtbXapi.Window value) {
        if (windowBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          window_ = value;
          onChanged();
        } else {
          windowBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder setWindow(
          com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder builderForValue) {
        if (windowBuilder_ == null) {
          window_ = builderForValue.build();
          onChanged();
        } else {
          windowBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder mergeWindow(com.magnite.openrtb.v2.OpenRtbXapi.Window value) {
        if (windowBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              window_ != null &&
              window_ != com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance()) {
            window_ =
              com.magnite.openrtb.v2.OpenRtbXapi.Window.newBuilder(window_).mergeFrom(value).buildPartial();
          } else {
            window_ = value;
          }
          onChanged();
        } else {
          windowBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public Builder clearWindow() {
        if (windowBuilder_ == null) {
          window_ = null;
          onChanged();
        } else {
          windowBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder getWindowBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getWindowFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder getWindowOrBuilder() {
        if (windowBuilder_ != null) {
          return windowBuilder_.getMessageOrBuilder();
        } else {
          return window_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.Window.getDefaultInstance() : window_;
        }
      }
      /**
       * <pre>
       * For greater transparency around video inventory, some buyers require this
       * additional data relating to the content and the video player.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.Window window = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.Window, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder, com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder> 
          getWindowFieldBuilder() {
        if (windowBuilder_ == null) {
          windowBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.Window, com.magnite.openrtb.v2.OpenRtbXapi.Window.Builder, com.magnite.openrtb.v2.OpenRtbXapi.WindowOrBuilder>(
                  getWindow(),
                  getParentForChildren(),
                  isClean());
          window_ = null;
        }
        return windowBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.SiteExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.SiteExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.SiteExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.SiteExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.SiteExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SiteExt>
        PARSER = new com.google.protobuf.AbstractParser<SiteExt>() {
      @java.lang.Override
      public SiteExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SiteExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SiteExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SiteExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.SiteExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PublisherExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.PublisherExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.PublisherExt}
   */
  public static final class PublisherExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.PublisherExt)
      PublisherExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PublisherExt.newBuilder() to construct.
    private PublisherExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PublisherExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PublisherExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PublisherExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.class, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.PublisherExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ account ID.
       * </pre>
       *
       * <code>optional int32 account_id = 1;</code>
       * @return Whether the accountId field is set.
       */
      boolean hasAccountId();
      /**
       * <pre>
       * DV+ account ID.
       * </pre>
       *
       * <code>optional int32 account_id = 1;</code>
       * @return The accountId.
       */
      int getAccountId();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.PublisherExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.PublisherExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                accountId_ = input.readInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int ACCOUNT_ID_FIELD_NUMBER = 1;
      private int accountId_;
      /**
       * <pre>
       * DV+ account ID.
       * </pre>
       *
       * <code>optional int32 account_id = 1;</code>
       * @return Whether the accountId field is set.
       */
      @java.lang.Override
      public boolean hasAccountId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ account ID.
       * </pre>
       *
       * <code>optional int32 account_id = 1;</code>
       * @return The accountId.
       */
      @java.lang.Override
      public int getAccountId() {
        return accountId_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, accountId_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, accountId_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp) obj;

        if (hasAccountId() != other.hasAccountId()) return false;
        if (hasAccountId()) {
          if (getAccountId()
              != other.getAccountId()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasAccountId()) {
          hash = (37 * hash) + ACCOUNT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getAccountId();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.PublisherExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.PublisherExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          accountId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.accountId_ = accountId_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.getDefaultInstance()) return this;
          if (other.hasAccountId()) {
            setAccountId(other.getAccountId());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int accountId_ ;
        /**
         * <pre>
         * DV+ account ID.
         * </pre>
         *
         * <code>optional int32 account_id = 1;</code>
         * @return Whether the accountId field is set.
         */
        @java.lang.Override
        public boolean hasAccountId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ account ID.
         * </pre>
         *
         * <code>optional int32 account_id = 1;</code>
         * @return The accountId.
         */
        @java.lang.Override
        public int getAccountId() {
          return accountId_;
        }
        /**
         * <pre>
         * DV+ account ID.
         * </pre>
         *
         * <code>optional int32 account_id = 1;</code>
         * @param value The accountId to set.
         * @return This builder for chaining.
         */
        public Builder setAccountId(int value) {
          bitField0_ |= 0x00000001;
          accountId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ account ID.
         * </pre>
         *
         * <code>optional int32 account_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearAccountId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          accountId_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.PublisherExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.PublisherExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt other = (com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.PublisherExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.PublisherExt)
        com.magnite.openrtb.v2.OpenRtbXapi.PublisherExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.class, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_PublisherExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt result = new com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.PublisherExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.PublisherExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.PublisherExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PublisherExt>
        PARSER = new com.google.protobuf.AbstractParser<PublisherExt>() {
      @java.lang.Override
      public PublisherExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PublisherExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PublisherExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PublisherExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeviceExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.DeviceExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.RpOrBuilder getRpOrBuilder();

    /**
     * <pre>
     * Indicates whether user IP addresses should be masked before sending to
     * DSPs. Note that this feature is only enabled for select accounts.
     * </pre>
     *
     * <code>optional bool ipmask = 2;</code>
     * @return Whether the ipmask field is set.
     */
    boolean hasIpmask();
    /**
     * <pre>
     * Indicates whether user IP addresses should be masked before sending to
     * DSPs. Note that this feature is only enabled for select accounts.
     * </pre>
     *
     * <code>optional bool ipmask = 2;</code>
     * @return The ipmask.
     */
    boolean getIpmask();

    /**
     * <pre>
     * Additional information specific to Digital Out of Home (DOOH).
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
     * @return Whether the dooh field is set.
     */
    boolean hasDooh();
    /**
     * <pre>
     * Additional information specific to Digital Out of Home (DOOH).
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
     * @return The dooh.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh getDooh();
    /**
     * <pre>
     * Additional information specific to Digital Out of Home (DOOH).
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.DoohOrBuilder getDoohOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.DeviceExt}
   */
  public static final class DeviceExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.DeviceExt)
      DeviceExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceExt.newBuilder() to construct.
    private DeviceExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeviceExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeviceExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              ipmask_ = input.readBool();
              break;
            }
            case 26: {
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = dooh_.toBuilder();
              }
              dooh_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dooh_);
                dooh_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.class, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.DeviceExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Screen size (width “x” height).
       * </pre>
       *
       * <code>optional string res = 1;</code>
       * @return Whether the res field is set.
       */
      boolean hasRes();
      /**
       * <pre>
       * Screen size (width “x” height).
       * </pre>
       *
       * <code>optional string res = 1;</code>
       * @return The res.
       */
      java.lang.String getRes();
      /**
       * <pre>
       * Screen size (width “x” height).
       * </pre>
       *
       * <code>optional string res = 1;</code>
       * @return The bytes for res.
       */
      com.google.protobuf.ByteString
          getResBytes();

      /**
       * <pre>
       * The ratio of physical pixels to device independent pixels (dips) on
       * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
       * </pre>
       *
       * <code>optional double pixelratio = 2;</code>
       * @return Whether the pixelratio field is set.
       */
      boolean hasPixelratio();
      /**
       * <pre>
       * The ratio of physical pixels to device independent pixels (dips) on
       * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
       * </pre>
       *
       * <code>optional double pixelratio = 2;</code>
       * @return The pixelratio.
       */
      double getPixelratio();

      /**
       * <pre>
       * This is the X-Forwarded-For header that the caller received from the
       * end device. The field is omitted if that header was not received. If
       * the end device called Magnite directly, we should expect the calling
       * IP address and X-Forwarded-For header to match the “ip” and "xff"
       * values in this request.
       * </pre>
       *
       * <code>optional string xff = 3;</code>
       * @return Whether the xff field is set.
       */
      boolean hasXff();
      /**
       * <pre>
       * This is the X-Forwarded-For header that the caller received from the
       * end device. The field is omitted if that header was not received. If
       * the end device called Magnite directly, we should expect the calling
       * IP address and X-Forwarded-For header to match the “ip” and "xff"
       * values in this request.
       * </pre>
       *
       * <code>optional string xff = 3;</code>
       * @return The xff.
       */
      java.lang.String getXff();
      /**
       * <pre>
       * This is the X-Forwarded-For header that the caller received from the
       * end device. The field is omitted if that header was not received. If
       * the end device called Magnite directly, we should expect the calling
       * IP address and X-Forwarded-For header to match the “ip” and "xff"
       * values in this request.
       * </pre>
       *
       * <code>optional string xff = 3;</code>
       * @return The bytes for xff.
       */
      com.google.protobuf.ByteString
          getXffBytes();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.DeviceExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.DeviceExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        res_ = "";
        xff_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                res_ = bs;
                break;
              }
              case 17: {
                bitField0_ |= 0x00000002;
                pixelratio_ = input.readDouble();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                xff_ = bs;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int RES_FIELD_NUMBER = 1;
      private volatile java.lang.Object res_;
      /**
       * <pre>
       * Screen size (width “x” height).
       * </pre>
       *
       * <code>optional string res = 1;</code>
       * @return Whether the res field is set.
       */
      @java.lang.Override
      public boolean hasRes() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Screen size (width “x” height).
       * </pre>
       *
       * <code>optional string res = 1;</code>
       * @return The res.
       */
      @java.lang.Override
      public java.lang.String getRes() {
        java.lang.Object ref = res_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            res_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * Screen size (width “x” height).
       * </pre>
       *
       * <code>optional string res = 1;</code>
       * @return The bytes for res.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getResBytes() {
        java.lang.Object ref = res_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          res_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PIXELRATIO_FIELD_NUMBER = 2;
      private double pixelratio_;
      /**
       * <pre>
       * The ratio of physical pixels to device independent pixels (dips) on
       * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
       * </pre>
       *
       * <code>optional double pixelratio = 2;</code>
       * @return Whether the pixelratio field is set.
       */
      @java.lang.Override
      public boolean hasPixelratio() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The ratio of physical pixels to device independent pixels (dips) on
       * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
       * </pre>
       *
       * <code>optional double pixelratio = 2;</code>
       * @return The pixelratio.
       */
      @java.lang.Override
      public double getPixelratio() {
        return pixelratio_;
      }

      public static final int XFF_FIELD_NUMBER = 3;
      private volatile java.lang.Object xff_;
      /**
       * <pre>
       * This is the X-Forwarded-For header that the caller received from the
       * end device. The field is omitted if that header was not received. If
       * the end device called Magnite directly, we should expect the calling
       * IP address and X-Forwarded-For header to match the “ip” and "xff"
       * values in this request.
       * </pre>
       *
       * <code>optional string xff = 3;</code>
       * @return Whether the xff field is set.
       */
      @java.lang.Override
      public boolean hasXff() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * This is the X-Forwarded-For header that the caller received from the
       * end device. The field is omitted if that header was not received. If
       * the end device called Magnite directly, we should expect the calling
       * IP address and X-Forwarded-For header to match the “ip” and "xff"
       * values in this request.
       * </pre>
       *
       * <code>optional string xff = 3;</code>
       * @return The xff.
       */
      @java.lang.Override
      public java.lang.String getXff() {
        java.lang.Object ref = xff_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            xff_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * This is the X-Forwarded-For header that the caller received from the
       * end device. The field is omitted if that header was not received. If
       * the end device called Magnite directly, we should expect the calling
       * IP address and X-Forwarded-For header to match the “ip” and "xff"
       * values in this request.
       * </pre>
       *
       * <code>optional string xff = 3;</code>
       * @return The bytes for xff.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getXffBytes() {
        java.lang.Object ref = xff_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xff_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, res_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeDouble(2, pixelratio_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, xff_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, res_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(2, pixelratio_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, xff_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp) obj;

        if (hasRes() != other.hasRes()) return false;
        if (hasRes()) {
          if (!getRes()
              .equals(other.getRes())) return false;
        }
        if (hasPixelratio() != other.hasPixelratio()) return false;
        if (hasPixelratio()) {
          if (java.lang.Double.doubleToLongBits(getPixelratio())
              != java.lang.Double.doubleToLongBits(
                  other.getPixelratio())) return false;
        }
        if (hasXff() != other.hasXff()) return false;
        if (hasXff()) {
          if (!getXff()
              .equals(other.getXff())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasRes()) {
          hash = (37 * hash) + RES_FIELD_NUMBER;
          hash = (53 * hash) + getRes().hashCode();
        }
        if (hasPixelratio()) {
          hash = (37 * hash) + PIXELRATIO_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getPixelratio()));
        }
        if (hasXff()) {
          hash = (37 * hash) + XFF_FIELD_NUMBER;
          hash = (53 * hash) + getXff().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.DeviceExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.DeviceExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          res_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          pixelratio_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000002);
          xff_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.res_ = res_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.pixelratio_ = pixelratio_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.xff_ = xff_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.getDefaultInstance()) return this;
          if (other.hasRes()) {
            bitField0_ |= 0x00000001;
            res_ = other.res_;
            onChanged();
          }
          if (other.hasPixelratio()) {
            setPixelratio(other.getPixelratio());
          }
          if (other.hasXff()) {
            bitField0_ |= 0x00000004;
            xff_ = other.xff_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object res_ = "";
        /**
         * <pre>
         * Screen size (width “x” height).
         * </pre>
         *
         * <code>optional string res = 1;</code>
         * @return Whether the res field is set.
         */
        public boolean hasRes() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Screen size (width “x” height).
         * </pre>
         *
         * <code>optional string res = 1;</code>
         * @return The res.
         */
        public java.lang.String getRes() {
          java.lang.Object ref = res_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              res_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Screen size (width “x” height).
         * </pre>
         *
         * <code>optional string res = 1;</code>
         * @return The bytes for res.
         */
        public com.google.protobuf.ByteString
            getResBytes() {
          java.lang.Object ref = res_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            res_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Screen size (width “x” height).
         * </pre>
         *
         * <code>optional string res = 1;</code>
         * @param value The res to set.
         * @return This builder for chaining.
         */
        public Builder setRes(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          res_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Screen size (width “x” height).
         * </pre>
         *
         * <code>optional string res = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearRes() {
          bitField0_ = (bitField0_ & ~0x00000001);
          res_ = getDefaultInstance().getRes();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Screen size (width “x” height).
         * </pre>
         *
         * <code>optional string res = 1;</code>
         * @param value The bytes for res to set.
         * @return This builder for chaining.
         */
        public Builder setResBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          res_ = value;
          onChanged();
          return this;
        }

        private double pixelratio_ ;
        /**
         * <pre>
         * The ratio of physical pixels to device independent pixels (dips) on
         * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
         * </pre>
         *
         * <code>optional double pixelratio = 2;</code>
         * @return Whether the pixelratio field is set.
         */
        @java.lang.Override
        public boolean hasPixelratio() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * The ratio of physical pixels to device independent pixels (dips) on
         * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
         * </pre>
         *
         * <code>optional double pixelratio = 2;</code>
         * @return The pixelratio.
         */
        @java.lang.Override
        public double getPixelratio() {
          return pixelratio_;
        }
        /**
         * <pre>
         * The ratio of physical pixels to device independent pixels (dips) on
         * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
         * </pre>
         *
         * <code>optional double pixelratio = 2;</code>
         * @param value The pixelratio to set.
         * @return This builder for chaining.
         */
        public Builder setPixelratio(double value) {
          bitField0_ |= 0x00000002;
          pixelratio_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The ratio of physical pixels to device independent pixels (dips) on
         * the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
         * </pre>
         *
         * <code>optional double pixelratio = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearPixelratio() {
          bitField0_ = (bitField0_ & ~0x00000002);
          pixelratio_ = 0D;
          onChanged();
          return this;
        }

        private java.lang.Object xff_ = "";
        /**
         * <pre>
         * This is the X-Forwarded-For header that the caller received from the
         * end device. The field is omitted if that header was not received. If
         * the end device called Magnite directly, we should expect the calling
         * IP address and X-Forwarded-For header to match the “ip” and "xff"
         * values in this request.
         * </pre>
         *
         * <code>optional string xff = 3;</code>
         * @return Whether the xff field is set.
         */
        public boolean hasXff() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * This is the X-Forwarded-For header that the caller received from the
         * end device. The field is omitted if that header was not received. If
         * the end device called Magnite directly, we should expect the calling
         * IP address and X-Forwarded-For header to match the “ip” and "xff"
         * values in this request.
         * </pre>
         *
         * <code>optional string xff = 3;</code>
         * @return The xff.
         */
        public java.lang.String getXff() {
          java.lang.Object ref = xff_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              xff_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * This is the X-Forwarded-For header that the caller received from the
         * end device. The field is omitted if that header was not received. If
         * the end device called Magnite directly, we should expect the calling
         * IP address and X-Forwarded-For header to match the “ip” and "xff"
         * values in this request.
         * </pre>
         *
         * <code>optional string xff = 3;</code>
         * @return The bytes for xff.
         */
        public com.google.protobuf.ByteString
            getXffBytes() {
          java.lang.Object ref = xff_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            xff_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * This is the X-Forwarded-For header that the caller received from the
         * end device. The field is omitted if that header was not received. If
         * the end device called Magnite directly, we should expect the calling
         * IP address and X-Forwarded-For header to match the “ip” and "xff"
         * values in this request.
         * </pre>
         *
         * <code>optional string xff = 3;</code>
         * @param value The xff to set.
         * @return This builder for chaining.
         */
        public Builder setXff(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          xff_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * This is the X-Forwarded-For header that the caller received from the
         * end device. The field is omitted if that header was not received. If
         * the end device called Magnite directly, we should expect the calling
         * IP address and X-Forwarded-For header to match the “ip” and "xff"
         * values in this request.
         * </pre>
         *
         * <code>optional string xff = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearXff() {
          bitField0_ = (bitField0_ & ~0x00000004);
          xff_ = getDefaultInstance().getXff();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * This is the X-Forwarded-For header that the caller received from the
         * end device. The field is omitted if that header was not received. If
         * the end device called Magnite directly, we should expect the calling
         * IP address and X-Forwarded-For header to match the “ip” and "xff"
         * values in this request.
         * </pre>
         *
         * <code>optional string xff = 3;</code>
         * @param value The bytes for xff to set.
         * @return This builder for chaining.
         */
        public Builder setXffBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          xff_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.DeviceExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.DeviceExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface DoohOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.DeviceExt.Dooh)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Multiplier that applies to all fees, prices, and floors.
       * </pre>
       *
       * <code>optional double impmultiply = 1;</code>
       * @return Whether the impmultiply field is set.
       */
      boolean hasImpmultiply();
      /**
       * <pre>
       * Multiplier that applies to all fees, prices, and floors.
       * </pre>
       *
       * <code>optional double impmultiply = 1;</code>
       * @return The impmultiply.
       */
      double getImpmultiply();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.DeviceExt.Dooh}
     */
    public static final class Dooh extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.DeviceExt.Dooh)
        DoohOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Dooh.newBuilder() to construct.
      private Dooh(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Dooh() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Dooh();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Dooh(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                bitField0_ |= 0x00000001;
                impmultiply_ = input.readDouble();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.class, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder.class);
      }

      private int bitField0_;
      public static final int IMPMULTIPLY_FIELD_NUMBER = 1;
      private double impmultiply_;
      /**
       * <pre>
       * Multiplier that applies to all fees, prices, and floors.
       * </pre>
       *
       * <code>optional double impmultiply = 1;</code>
       * @return Whether the impmultiply field is set.
       */
      @java.lang.Override
      public boolean hasImpmultiply() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Multiplier that applies to all fees, prices, and floors.
       * </pre>
       *
       * <code>optional double impmultiply = 1;</code>
       * @return The impmultiply.
       */
      @java.lang.Override
      public double getImpmultiply() {
        return impmultiply_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeDouble(1, impmultiply_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(1, impmultiply_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh other = (com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh) obj;

        if (hasImpmultiply() != other.hasImpmultiply()) return false;
        if (hasImpmultiply()) {
          if (java.lang.Double.doubleToLongBits(getImpmultiply())
              != java.lang.Double.doubleToLongBits(
                  other.getImpmultiply())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasImpmultiply()) {
          hash = (37 * hash) + IMPMULTIPLY_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getImpmultiply()));
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.DeviceExt.Dooh}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.DeviceExt.Dooh)
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.DoohOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.class, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          impmultiply_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh build() {
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh result = new com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.impmultiply_ = impmultiply_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.getDefaultInstance()) return this;
          if (other.hasImpmultiply()) {
            setImpmultiply(other.getImpmultiply());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private double impmultiply_ ;
        /**
         * <pre>
         * Multiplier that applies to all fees, prices, and floors.
         * </pre>
         *
         * <code>optional double impmultiply = 1;</code>
         * @return Whether the impmultiply field is set.
         */
        @java.lang.Override
        public boolean hasImpmultiply() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Multiplier that applies to all fees, prices, and floors.
         * </pre>
         *
         * <code>optional double impmultiply = 1;</code>
         * @return The impmultiply.
         */
        @java.lang.Override
        public double getImpmultiply() {
          return impmultiply_;
        }
        /**
         * <pre>
         * Multiplier that applies to all fees, prices, and floors.
         * </pre>
         *
         * <code>optional double impmultiply = 1;</code>
         * @param value The impmultiply to set.
         * @return This builder for chaining.
         */
        public Builder setImpmultiply(double value) {
          bitField0_ |= 0x00000001;
          impmultiply_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Multiplier that applies to all fees, prices, and floors.
         * </pre>
         *
         * <code>optional double impmultiply = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearImpmultiply() {
          bitField0_ = (bitField0_ & ~0x00000001);
          impmultiply_ = 0D;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.DeviceExt.Dooh)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.DeviceExt.Dooh)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Dooh>
          PARSER = new com.google.protobuf.AbstractParser<Dooh>() {
        @java.lang.Override
        public Dooh parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Dooh(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Dooh> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Dooh> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.getDefaultInstance() : rp_;
    }

    public static final int IPMASK_FIELD_NUMBER = 2;
    private boolean ipmask_;
    /**
     * <pre>
     * Indicates whether user IP addresses should be masked before sending to
     * DSPs. Note that this feature is only enabled for select accounts.
     * </pre>
     *
     * <code>optional bool ipmask = 2;</code>
     * @return Whether the ipmask field is set.
     */
    @java.lang.Override
    public boolean hasIpmask() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Indicates whether user IP addresses should be masked before sending to
     * DSPs. Note that this feature is only enabled for select accounts.
     * </pre>
     *
     * <code>optional bool ipmask = 2;</code>
     * @return The ipmask.
     */
    @java.lang.Override
    public boolean getIpmask() {
      return ipmask_;
    }

    public static final int DOOH_FIELD_NUMBER = 3;
    private com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh dooh_;
    /**
     * <pre>
     * Additional information specific to Digital Out of Home (DOOH).
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
     * @return Whether the dooh field is set.
     */
    @java.lang.Override
    public boolean hasDooh() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Additional information specific to Digital Out of Home (DOOH).
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
     * @return The dooh.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh getDooh() {
      return dooh_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.getDefaultInstance() : dooh_;
    }
    /**
     * <pre>
     * Additional information specific to Digital Out of Home (DOOH).
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.DoohOrBuilder getDoohOrBuilder() {
      return dooh_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.getDefaultInstance() : dooh_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, ipmask_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getDooh());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, ipmask_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getDooh());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt other = (com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (hasIpmask() != other.hasIpmask()) return false;
      if (hasIpmask()) {
        if (getIpmask()
            != other.getIpmask()) return false;
      }
      if (hasDooh() != other.hasDooh()) return false;
      if (hasDooh()) {
        if (!getDooh()
            .equals(other.getDooh())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      if (hasIpmask()) {
        hash = (37 * hash) + IPMASK_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIpmask());
      }
      if (hasDooh()) {
        hash = (37 * hash) + DOOH_FIELD_NUMBER;
        hash = (53 * hash) + getDooh().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.DeviceExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.DeviceExt)
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.class, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
          getDoohFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        ipmask_ = false;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (doohBuilder_ == null) {
          dooh_ = null;
        } else {
          doohBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt result = new com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.ipmask_ = ipmask_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (doohBuilder_ == null) {
            result.dooh_ = dooh_;
          } else {
            result.dooh_ = doohBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        if (other.hasIpmask()) {
          setIpmask(other.getIpmask());
        }
        if (other.hasDooh()) {
          mergeDooh(other.getDooh());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }

      private boolean ipmask_ ;
      /**
       * <pre>
       * Indicates whether user IP addresses should be masked before sending to
       * DSPs. Note that this feature is only enabled for select accounts.
       * </pre>
       *
       * <code>optional bool ipmask = 2;</code>
       * @return Whether the ipmask field is set.
       */
      @java.lang.Override
      public boolean hasIpmask() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Indicates whether user IP addresses should be masked before sending to
       * DSPs. Note that this feature is only enabled for select accounts.
       * </pre>
       *
       * <code>optional bool ipmask = 2;</code>
       * @return The ipmask.
       */
      @java.lang.Override
      public boolean getIpmask() {
        return ipmask_;
      }
      /**
       * <pre>
       * Indicates whether user IP addresses should be masked before sending to
       * DSPs. Note that this feature is only enabled for select accounts.
       * </pre>
       *
       * <code>optional bool ipmask = 2;</code>
       * @param value The ipmask to set.
       * @return This builder for chaining.
       */
      public Builder setIpmask(boolean value) {
        bitField0_ |= 0x00000002;
        ipmask_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicates whether user IP addresses should be masked before sending to
       * DSPs. Note that this feature is only enabled for select accounts.
       * </pre>
       *
       * <code>optional bool ipmask = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIpmask() {
        bitField0_ = (bitField0_ & ~0x00000002);
        ipmask_ = false;
        onChanged();
        return this;
      }

      private com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh dooh_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.DoohOrBuilder> doohBuilder_;
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       * @return Whether the dooh field is set.
       */
      public boolean hasDooh() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       * @return The dooh.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh getDooh() {
        if (doohBuilder_ == null) {
          return dooh_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.getDefaultInstance() : dooh_;
        } else {
          return doohBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       */
      public Builder setDooh(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh value) {
        if (doohBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dooh_ = value;
          onChanged();
        } else {
          doohBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       */
      public Builder setDooh(
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder builderForValue) {
        if (doohBuilder_ == null) {
          dooh_ = builderForValue.build();
          onChanged();
        } else {
          doohBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       */
      public Builder mergeDooh(com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh value) {
        if (doohBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              dooh_ != null &&
              dooh_ != com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.getDefaultInstance()) {
            dooh_ =
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.newBuilder(dooh_).mergeFrom(value).buildPartial();
          } else {
            dooh_ = value;
          }
          onChanged();
        } else {
          doohBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       */
      public Builder clearDooh() {
        if (doohBuilder_ == null) {
          dooh_ = null;
          onChanged();
        } else {
          doohBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder getDoohBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getDoohFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.DoohOrBuilder getDoohOrBuilder() {
        if (doohBuilder_ != null) {
          return doohBuilder_.getMessageOrBuilder();
        } else {
          return dooh_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.getDefaultInstance() : dooh_;
        }
      }
      /**
       * <pre>
       * Additional information specific to Digital Out of Home (DOOH).
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.DeviceExt.Dooh dooh = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.DoohOrBuilder> 
          getDoohFieldBuilder() {
        if (doohBuilder_ == null) {
          doohBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.Dooh.Builder, com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.DoohOrBuilder>(
                  getDooh(),
                  getParentForChildren(),
                  isClean());
          dooh_ = null;
        }
        return doohBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.DeviceExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.DeviceExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<DeviceExt>
        PARSER = new com.google.protobuf.AbstractParser<DeviceExt>() {
      @java.lang.Override
      public DeviceExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DeviceExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<DeviceExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DeviceExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GeoExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.GeoExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.GeoExt}
   */
  public static final class GeoExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.GeoExt)
      GeoExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GeoExt.newBuilder() to construct.
    private GeoExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GeoExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GeoExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GeoExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.class, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.GeoExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Indicates whether or not the app has asked the user for permission
       * to read fine-grained location data (GPS). A value of 1 indicates
       * “yes”; 0 indicates “no”. If the field is not present, this is
       * unknown.
       * </pre>
       *
       * <code>optional int32 consent = 1;</code>
       * @return Whether the consent field is set.
       */
      boolean hasConsent();
      /**
       * <pre>
       * Indicates whether or not the app has asked the user for permission
       * to read fine-grained location data (GPS). A value of 1 indicates
       * “yes”; 0 indicates “no”. If the field is not present, this is
       * unknown.
       * </pre>
       *
       * <code>optional int32 consent = 1;</code>
       * @return The consent.
       */
      int getConsent();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.GeoExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.GeoExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                consent_ = input.readInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int CONSENT_FIELD_NUMBER = 1;
      private int consent_;
      /**
       * <pre>
       * Indicates whether or not the app has asked the user for permission
       * to read fine-grained location data (GPS). A value of 1 indicates
       * “yes”; 0 indicates “no”. If the field is not present, this is
       * unknown.
       * </pre>
       *
       * <code>optional int32 consent = 1;</code>
       * @return Whether the consent field is set.
       */
      @java.lang.Override
      public boolean hasConsent() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Indicates whether or not the app has asked the user for permission
       * to read fine-grained location data (GPS). A value of 1 indicates
       * “yes”; 0 indicates “no”. If the field is not present, this is
       * unknown.
       * </pre>
       *
       * <code>optional int32 consent = 1;</code>
       * @return The consent.
       */
      @java.lang.Override
      public int getConsent() {
        return consent_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, consent_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, consent_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp) obj;

        if (hasConsent() != other.hasConsent()) return false;
        if (hasConsent()) {
          if (getConsent()
              != other.getConsent()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasConsent()) {
          hash = (37 * hash) + CONSENT_FIELD_NUMBER;
          hash = (53 * hash) + getConsent();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.GeoExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.GeoExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          consent_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.consent_ = consent_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.getDefaultInstance()) return this;
          if (other.hasConsent()) {
            setConsent(other.getConsent());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int consent_ ;
        /**
         * <pre>
         * Indicates whether or not the app has asked the user for permission
         * to read fine-grained location data (GPS). A value of 1 indicates
         * “yes”; 0 indicates “no”. If the field is not present, this is
         * unknown.
         * </pre>
         *
         * <code>optional int32 consent = 1;</code>
         * @return Whether the consent field is set.
         */
        @java.lang.Override
        public boolean hasConsent() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Indicates whether or not the app has asked the user for permission
         * to read fine-grained location data (GPS). A value of 1 indicates
         * “yes”; 0 indicates “no”. If the field is not present, this is
         * unknown.
         * </pre>
         *
         * <code>optional int32 consent = 1;</code>
         * @return The consent.
         */
        @java.lang.Override
        public int getConsent() {
          return consent_;
        }
        /**
         * <pre>
         * Indicates whether or not the app has asked the user for permission
         * to read fine-grained location data (GPS). A value of 1 indicates
         * “yes”; 0 indicates “no”. If the field is not present, this is
         * unknown.
         * </pre>
         *
         * <code>optional int32 consent = 1;</code>
         * @param value The consent to set.
         * @return This builder for chaining.
         */
        public Builder setConsent(int value) {
          bitField0_ |= 0x00000001;
          consent_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Indicates whether or not the app has asked the user for permission
         * to read fine-grained location data (GPS). A value of 1 indicates
         * “yes”; 0 indicates “no”. If the field is not present, this is
         * unknown.
         * </pre>
         *
         * <code>optional int32 consent = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearConsent() {
          bitField0_ = (bitField0_ & ~0x00000001);
          consent_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.GeoExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.GeoExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.GeoExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.GeoExt other = (com.magnite.openrtb.v2.OpenRtbXapi.GeoExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.GeoExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.GeoExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.GeoExt)
        com.magnite.openrtb.v2.OpenRtbXapi.GeoExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.class, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_GeoExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.GeoExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.GeoExt result = new com.magnite.openrtb.v2.OpenRtbXapi.GeoExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.GeoExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.GeoExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.GeoExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.GeoExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.GeoExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.GeoExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.GeoExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.GeoExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.GeoExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.GeoExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.GeoExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<GeoExt>
        PARSER = new com.google.protobuf.AbstractParser<GeoExt>() {
      @java.lang.Override
      public GeoExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GeoExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GeoExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GeoExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.GeoExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UserExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.UserExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * DEPRECATED: DigiTrust user ID and context.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
     * @return Whether the dt field is set.
     */
    boolean hasDt();
    /**
     * <pre>
     * DEPRECATED: DigiTrust user ID and context.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
     * @return The dt.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt getDt();
    /**
     * <pre>
     * DEPRECATED: DigiTrust user ID and context.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.UserExt.DtOrBuilder getDtOrBuilder();

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.UserExt.RpOrBuilder getRpOrBuilder();

    /**
     * <pre>
     * LiveRamp IdentityLink (IDL) envelope.
     * </pre>
     *
     * <code>optional string liveramp_idl = 4;</code>
     * @return Whether the liverampIdl field is set.
     */
    boolean hasLiverampIdl();
    /**
     * <pre>
     * LiveRamp IdentityLink (IDL) envelope.
     * </pre>
     *
     * <code>optional string liveramp_idl = 4;</code>
     * @return The liverampIdl.
     */
    java.lang.String getLiverampIdl();
    /**
     * <pre>
     * LiveRamp IdentityLink (IDL) envelope.
     * </pre>
     *
     * <code>optional string liveramp_idl = 4;</code>
     * @return The bytes for liverampIdl.
     */
    com.google.protobuf.ByteString
        getLiverampIdlBytes();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.UserExt}
   */
  public static final class UserExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.UserExt)
      UserExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UserExt.newBuilder() to construct.
    private UserExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UserExt() {
      liverampIdl_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new UserExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UserExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = dt_.toBuilder();
              }
              dt_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dt_);
                dt_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 26: {
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              liverampIdl_ = bs;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.class, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Builder.class);
    }

    public interface DtOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.UserExt.Dt)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The user ID, encrypted.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return Whether the id field is set.
       */
      boolean hasId();
      /**
       * <pre>
       * The user ID, encrypted.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The id.
       */
      java.lang.String getId();
      /**
       * <pre>
       * The user ID, encrypted.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString
          getIdBytes();

      /**
       * <pre>
       * User consent for sharing/recording the user ID, 0 (default)
       * indicates consent, 1 indicates no consent.
       * </pre>
       *
       * <code>optional uint64 pref = 2;</code>
       * @return Whether the pref field is set.
       */
      boolean hasPref();
      /**
       * <pre>
       * User consent for sharing/recording the user ID, 0 (default)
       * indicates consent, 1 indicates no consent.
       * </pre>
       *
       * <code>optional uint64 pref = 2;</code>
       * @return The pref.
       */
      long getPref();

      /**
       * <pre>
       * The version of the key used to encrypt the user ID (not the key
       * itself). This allows the receiver to make a quick determination
       * that the key has been rotated.
       * </pre>
       *
       * <code>optional uint32 keyv = 3 [default = 1];</code>
       * @return Whether the keyv field is set.
       */
      boolean hasKeyv();
      /**
       * <pre>
       * The version of the key used to encrypt the user ID (not the key
       * itself). This allows the receiver to make a quick determination
       * that the key has been rotated.
       * </pre>
       *
       * <code>optional uint32 keyv = 3 [default = 1];</code>
       * @return The keyv.
       */
      int getKeyv();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.UserExt.Dt}
     */
    public static final class Dt extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.UserExt.Dt)
        DtOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Dt.newBuilder() to construct.
      private Dt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Dt() {
        id_ = "";
        keyv_ = 1;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Dt();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Dt(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                id_ = bs;
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                pref_ = input.readUInt64();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                keyv_ = input.readUInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Dt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Dt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.class, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder.class);
      }

      private int bitField0_;
      public static final int ID_FIELD_NUMBER = 1;
      private volatile java.lang.Object id_;
      /**
       * <pre>
       * The user ID, encrypted.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return Whether the id field is set.
       */
      @java.lang.Override
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The user ID, encrypted.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            id_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * The user ID, encrypted.
       * </pre>
       *
       * <code>optional string id = 1;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PREF_FIELD_NUMBER = 2;
      private long pref_;
      /**
       * <pre>
       * User consent for sharing/recording the user ID, 0 (default)
       * indicates consent, 1 indicates no consent.
       * </pre>
       *
       * <code>optional uint64 pref = 2;</code>
       * @return Whether the pref field is set.
       */
      @java.lang.Override
      public boolean hasPref() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * User consent for sharing/recording the user ID, 0 (default)
       * indicates consent, 1 indicates no consent.
       * </pre>
       *
       * <code>optional uint64 pref = 2;</code>
       * @return The pref.
       */
      @java.lang.Override
      public long getPref() {
        return pref_;
      }

      public static final int KEYV_FIELD_NUMBER = 3;
      private int keyv_;
      /**
       * <pre>
       * The version of the key used to encrypt the user ID (not the key
       * itself). This allows the receiver to make a quick determination
       * that the key has been rotated.
       * </pre>
       *
       * <code>optional uint32 keyv = 3 [default = 1];</code>
       * @return Whether the keyv field is set.
       */
      @java.lang.Override
      public boolean hasKeyv() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The version of the key used to encrypt the user ID (not the key
       * itself). This allows the receiver to make a quick determination
       * that the key has been rotated.
       * </pre>
       *
       * <code>optional uint32 keyv = 3 [default = 1];</code>
       * @return The keyv.
       */
      @java.lang.Override
      public int getKeyv() {
        return keyv_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeUInt64(2, pref_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeUInt32(3, keyv_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(2, pref_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, keyv_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt other = (com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt) obj;

        if (hasId() != other.hasId()) return false;
        if (hasId()) {
          if (!getId()
              .equals(other.getId())) return false;
        }
        if (hasPref() != other.hasPref()) return false;
        if (hasPref()) {
          if (getPref()
              != other.getPref()) return false;
        }
        if (hasKeyv() != other.hasKeyv()) return false;
        if (hasKeyv()) {
          if (getKeyv()
              != other.getKeyv()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasId()) {
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId().hashCode();
        }
        if (hasPref()) {
          hash = (37 * hash) + PREF_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPref());
        }
        if (hasKeyv()) {
          hash = (37 * hash) + KEYV_FIELD_NUMBER;
          hash = (53 * hash) + getKeyv();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.UserExt.Dt}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.UserExt.Dt)
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.DtOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Dt_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Dt_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.class, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          pref_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000002);
          keyv_ = 1;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Dt_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt build() {
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt result = new com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.pref_ = pref_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.keyv_ = keyv_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.getDefaultInstance()) return this;
          if (other.hasId()) {
            bitField0_ |= 0x00000001;
            id_ = other.id_;
            onChanged();
          }
          if (other.hasPref()) {
            setPref(other.getPref());
          }
          if (other.hasKeyv()) {
            setKeyv(other.getKeyv());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object id_ = "";
        /**
         * <pre>
         * The user ID, encrypted.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return Whether the id field is set.
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * The user ID, encrypted.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return The id.
         */
        public java.lang.String getId() {
          java.lang.Object ref = id_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              id_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The user ID, encrypted.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return The bytes for id.
         */
        public com.google.protobuf.ByteString
            getIdBytes() {
          java.lang.Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The user ID, encrypted.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The user ID, encrypted.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The user ID, encrypted.
         * </pre>
         *
         * <code>optional string id = 1;</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }

        private long pref_ ;
        /**
         * <pre>
         * User consent for sharing/recording the user ID, 0 (default)
         * indicates consent, 1 indicates no consent.
         * </pre>
         *
         * <code>optional uint64 pref = 2;</code>
         * @return Whether the pref field is set.
         */
        @java.lang.Override
        public boolean hasPref() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * User consent for sharing/recording the user ID, 0 (default)
         * indicates consent, 1 indicates no consent.
         * </pre>
         *
         * <code>optional uint64 pref = 2;</code>
         * @return The pref.
         */
        @java.lang.Override
        public long getPref() {
          return pref_;
        }
        /**
         * <pre>
         * User consent for sharing/recording the user ID, 0 (default)
         * indicates consent, 1 indicates no consent.
         * </pre>
         *
         * <code>optional uint64 pref = 2;</code>
         * @param value The pref to set.
         * @return This builder for chaining.
         */
        public Builder setPref(long value) {
          bitField0_ |= 0x00000002;
          pref_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * User consent for sharing/recording the user ID, 0 (default)
         * indicates consent, 1 indicates no consent.
         * </pre>
         *
         * <code>optional uint64 pref = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearPref() {
          bitField0_ = (bitField0_ & ~0x00000002);
          pref_ = 0L;
          onChanged();
          return this;
        }

        private int keyv_ = 1;
        /**
         * <pre>
         * The version of the key used to encrypt the user ID (not the key
         * itself). This allows the receiver to make a quick determination
         * that the key has been rotated.
         * </pre>
         *
         * <code>optional uint32 keyv = 3 [default = 1];</code>
         * @return Whether the keyv field is set.
         */
        @java.lang.Override
        public boolean hasKeyv() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * The version of the key used to encrypt the user ID (not the key
         * itself). This allows the receiver to make a quick determination
         * that the key has been rotated.
         * </pre>
         *
         * <code>optional uint32 keyv = 3 [default = 1];</code>
         * @return The keyv.
         */
        @java.lang.Override
        public int getKeyv() {
          return keyv_;
        }
        /**
         * <pre>
         * The version of the key used to encrypt the user ID (not the key
         * itself). This allows the receiver to make a quick determination
         * that the key has been rotated.
         * </pre>
         *
         * <code>optional uint32 keyv = 3 [default = 1];</code>
         * @param value The keyv to set.
         * @return This builder for chaining.
         */
        public Builder setKeyv(int value) {
          bitField0_ |= 0x00000004;
          keyv_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The version of the key used to encrypt the user ID (not the key
         * itself). This allows the receiver to make a quick determination
         * that the key has been rotated.
         * </pre>
         *
         * <code>optional uint32 keyv = 3 [default = 1];</code>
         * @return This builder for chaining.
         */
        public Builder clearKeyv() {
          bitField0_ = (bitField0_ & ~0x00000004);
          keyv_ = 1;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.UserExt.Dt)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.UserExt.Dt)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Dt>
          PARSER = new com.google.protobuf.AbstractParser<Dt>() {
        @java.lang.Override
        public Dt parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Dt(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Dt> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Dt> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.UserExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> 
          getTargetList();
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTarget(int index);
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      int getTargetCount();
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTargetOrBuilderList();
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.UserExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.UserExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        target_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  target_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>();
                  mutable_bitField0_ |= 0x00000001;
                }
                target_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.PARSER, extensionRegistry));
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) != 0)) {
            target_ = java.util.Collections.unmodifiableList(target_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder.class);
      }

      public static final int TARGET_FIELD_NUMBER = 1;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> target_;
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTargetList() {
        return target_;
      }
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTargetOrBuilderList() {
        return target_;
      }
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      @java.lang.Override
      public int getTargetCount() {
        return target_.size();
      }
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTarget(int index) {
        return target_.get(index);
      }
      /**
       * <pre>
       * User-specific targeting. The target object contains an arbitrary set
       * of keys with values comprising of arrays of strings used for Deals
       * (Private Marketplace) targeting, utilized to target first party
       * visitor data. First party visitor data consists of non-PII data
       * about the user (i.e. demographic data).
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetOrBuilder(
          int index) {
        return target_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < target_.size(); i++) {
          output.writeMessage(1, target_.get(i));
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        for (int i = 0; i < target_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, target_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp) obj;

        if (!getTargetList()
            .equals(other.getTargetList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getTargetCount() > 0) {
          hash = (37 * hash) + TARGET_FIELD_NUMBER;
          hash = (53 * hash) + getTargetList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.UserExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.UserExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getTargetFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (targetBuilder_ == null) {
            target_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            targetBuilder_.clear();
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp(this);
          int from_bitField0_ = bitField0_;
          if (targetBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              target_ = java.util.Collections.unmodifiableList(target_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.target_ = target_;
          } else {
            result.target_ = targetBuilder_.build();
          }
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.getDefaultInstance()) return this;
          if (targetBuilder_ == null) {
            if (!other.target_.isEmpty()) {
              if (target_.isEmpty()) {
                target_ = other.target_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureTargetIsMutable();
                target_.addAll(other.target_);
              }
              onChanged();
            }
          } else {
            if (!other.target_.isEmpty()) {
              if (targetBuilder_.isEmpty()) {
                targetBuilder_.dispose();
                targetBuilder_ = null;
                target_ = other.target_;
                bitField0_ = (bitField0_ & ~0x00000001);
                targetBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getTargetFieldBuilder() : null;
              } else {
                targetBuilder_.addAllMessages(other.target_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> target_ =
          java.util.Collections.emptyList();
        private void ensureTargetIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            target_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>(target_);
            bitField0_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> targetBuilder_;

        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTargetList() {
          if (targetBuilder_ == null) {
            return java.util.Collections.unmodifiableList(target_);
          } else {
            return targetBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public int getTargetCount() {
          if (targetBuilder_ == null) {
            return target_.size();
          } else {
            return targetBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTarget(int index) {
          if (targetBuilder_ == null) {
            return target_.get(index);
          } else {
            return targetBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder setTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetIsMutable();
            target_.set(index, value);
            onChanged();
          } else {
            targetBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder setTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.set(index, builderForValue.build());
            onChanged();
          } else {
            targetBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder addTarget(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetIsMutable();
            target_.add(value);
            onChanged();
          } else {
            targetBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder addTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetIsMutable();
            target_.add(index, value);
            onChanged();
          } else {
            targetBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder addTarget(
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.add(builderForValue.build());
            onChanged();
          } else {
            targetBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder addTarget(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.add(index, builderForValue.build());
            onChanged();
          } else {
            targetBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder addAllTarget(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> values) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, target_);
            onChanged();
          } else {
            targetBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder clearTarget() {
          if (targetBuilder_ == null) {
            target_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            targetBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public Builder removeTarget(int index) {
          if (targetBuilder_ == null) {
            ensureTargetIsMutable();
            target_.remove(index);
            onChanged();
          } else {
            targetBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder getTargetBuilder(
            int index) {
          return getTargetFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetOrBuilder(
            int index) {
          if (targetBuilder_ == null) {
            return target_.get(index);  } else {
            return targetBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
             getTargetOrBuilderList() {
          if (targetBuilder_ != null) {
            return targetBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(target_);
          }
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTargetBuilder() {
          return getTargetFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTargetBuilder(
            int index) {
          return getTargetFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * User-specific targeting. The target object contains an arbitrary set
         * of keys with values comprising of arrays of strings used for Deals
         * (Private Marketplace) targeting, utilized to target first party
         * visitor data. First party visitor data consists of non-PII data
         * about the user (i.e. demographic data).
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair target = 1;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder> 
             getTargetBuilderList() {
          return getTargetFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
            getTargetFieldBuilder() {
          if (targetBuilder_ == null) {
            targetBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder>(
                    target_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            target_ = null;
          }
          return targetBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.UserExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.UserExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int DT_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt dt_;
    /**
     * <pre>
     * DEPRECATED: DigiTrust user ID and context.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
     * @return Whether the dt field is set.
     */
    @java.lang.Override
    public boolean hasDt() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * DEPRECATED: DigiTrust user ID and context.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
     * @return The dt.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt getDt() {
      return dt_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.getDefaultInstance() : dt_;
    }
    /**
     * <pre>
     * DEPRECATED: DigiTrust user ID and context.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.DtOrBuilder getDtOrBuilder() {
      return dt_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.getDefaultInstance() : dt_;
    }

    public static final int RP_FIELD_NUMBER = 3;
    private com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.getDefaultInstance() : rp_;
    }

    public static final int LIVERAMP_IDL_FIELD_NUMBER = 4;
    private volatile java.lang.Object liverampIdl_;
    /**
     * <pre>
     * LiveRamp IdentityLink (IDL) envelope.
     * </pre>
     *
     * <code>optional string liveramp_idl = 4;</code>
     * @return Whether the liverampIdl field is set.
     */
    @java.lang.Override
    public boolean hasLiverampIdl() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * LiveRamp IdentityLink (IDL) envelope.
     * </pre>
     *
     * <code>optional string liveramp_idl = 4;</code>
     * @return The liverampIdl.
     */
    @java.lang.Override
    public java.lang.String getLiverampIdl() {
      java.lang.Object ref = liverampIdl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          liverampIdl_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * LiveRamp IdentityLink (IDL) envelope.
     * </pre>
     *
     * <code>optional string liveramp_idl = 4;</code>
     * @return The bytes for liverampIdl.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLiverampIdlBytes() {
      java.lang.Object ref = liverampIdl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        liverampIdl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getDt());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getRp());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, liverampIdl_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDt());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getRp());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, liverampIdl_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.UserExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.UserExt other = (com.magnite.openrtb.v2.OpenRtbXapi.UserExt) obj;

      if (hasDt() != other.hasDt()) return false;
      if (hasDt()) {
        if (!getDt()
            .equals(other.getDt())) return false;
      }
      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (hasLiverampIdl() != other.hasLiverampIdl()) return false;
      if (hasLiverampIdl()) {
        if (!getLiverampIdl()
            .equals(other.getLiverampIdl())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDt()) {
        hash = (37 * hash) + DT_FIELD_NUMBER;
        hash = (53 * hash) + getDt().hashCode();
      }
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      if (hasLiverampIdl()) {
        hash = (37 * hash) + LIVERAMP_IDL_FIELD_NUMBER;
        hash = (53 * hash) + getLiverampIdl().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.UserExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.UserExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.UserExt)
        com.magnite.openrtb.v2.OpenRtbXapi.UserExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.UserExt.class, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.UserExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDtFieldBuilder();
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (dtBuilder_ == null) {
          dt_ = null;
        } else {
          dtBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        liverampIdl_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_UserExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.UserExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.UserExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.UserExt result = new com.magnite.openrtb.v2.OpenRtbXapi.UserExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (dtBuilder_ == null) {
            result.dt_ = dt_;
          } else {
            result.dt_ = dtBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.liverampIdl_ = liverampIdl_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.UserExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.UserExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.UserExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.UserExt.getDefaultInstance()) return this;
        if (other.hasDt()) {
          mergeDt(other.getDt());
        }
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        if (other.hasLiverampIdl()) {
          bitField0_ |= 0x00000004;
          liverampIdl_ = other.liverampIdl_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.UserExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.UserExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt dt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.DtOrBuilder> dtBuilder_;
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       * @return Whether the dt field is set.
       */
      public boolean hasDt() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       * @return The dt.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt getDt() {
        if (dtBuilder_ == null) {
          return dt_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.getDefaultInstance() : dt_;
        } else {
          return dtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       */
      public Builder setDt(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt value) {
        if (dtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dt_ = value;
          onChanged();
        } else {
          dtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       */
      public Builder setDt(
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder builderForValue) {
        if (dtBuilder_ == null) {
          dt_ = builderForValue.build();
          onChanged();
        } else {
          dtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       */
      public Builder mergeDt(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt value) {
        if (dtBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              dt_ != null &&
              dt_ != com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.getDefaultInstance()) {
            dt_ =
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.newBuilder(dt_).mergeFrom(value).buildPartial();
          } else {
            dt_ = value;
          }
          onChanged();
        } else {
          dtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       */
      public Builder clearDt() {
        if (dtBuilder_ == null) {
          dt_ = null;
          onChanged();
        } else {
          dtBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder getDtBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.DtOrBuilder getDtOrBuilder() {
        if (dtBuilder_ != null) {
          return dtBuilder_.getMessageOrBuilder();
        } else {
          return dt_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.getDefaultInstance() : dt_;
        }
      }
      /**
       * <pre>
       * DEPRECATED: DigiTrust user ID and context.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Dt dt = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.DtOrBuilder> 
          getDtFieldBuilder() {
        if (dtBuilder_ == null) {
          dtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Dt.Builder, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.DtOrBuilder>(
                  getDt(),
                  getParentForChildren(),
                  isClean());
          dt_ = null;
        }
        return dtBuilder_;
      }

      private com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.UserExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.UserExt.Rp rp = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.UserExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }

      private java.lang.Object liverampIdl_ = "";
      /**
       * <pre>
       * LiveRamp IdentityLink (IDL) envelope.
       * </pre>
       *
       * <code>optional string liveramp_idl = 4;</code>
       * @return Whether the liverampIdl field is set.
       */
      public boolean hasLiverampIdl() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * LiveRamp IdentityLink (IDL) envelope.
       * </pre>
       *
       * <code>optional string liveramp_idl = 4;</code>
       * @return The liverampIdl.
       */
      public java.lang.String getLiverampIdl() {
        java.lang.Object ref = liverampIdl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            liverampIdl_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * LiveRamp IdentityLink (IDL) envelope.
       * </pre>
       *
       * <code>optional string liveramp_idl = 4;</code>
       * @return The bytes for liverampIdl.
       */
      public com.google.protobuf.ByteString
          getLiverampIdlBytes() {
        java.lang.Object ref = liverampIdl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          liverampIdl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * LiveRamp IdentityLink (IDL) envelope.
       * </pre>
       *
       * <code>optional string liveramp_idl = 4;</code>
       * @param value The liverampIdl to set.
       * @return This builder for chaining.
       */
      public Builder setLiverampIdl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        liverampIdl_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LiveRamp IdentityLink (IDL) envelope.
       * </pre>
       *
       * <code>optional string liveramp_idl = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearLiverampIdl() {
        bitField0_ = (bitField0_ & ~0x00000004);
        liverampIdl_ = getDefaultInstance().getLiverampIdl();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LiveRamp IdentityLink (IDL) envelope.
       * </pre>
       *
       * <code>optional string liveramp_idl = 4;</code>
       * @param value The bytes for liverampIdl to set.
       * @return This builder for chaining.
       */
      public Builder setLiverampIdlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        liverampIdl_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.UserExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.UserExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.UserExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.UserExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.UserExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<UserExt>
        PARSER = new com.google.protobuf.AbstractParser<UserExt>() {
      @java.lang.Override
      public UserExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UserExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<UserExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<UserExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.UserExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RegsExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.RegsExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Flag indicating whether or not this request falls under California Cal
     * Bus &amp; Prof Code s22580 regulation.
     * </pre>
     *
     * <code>optional bool s22580 = 1;</code>
     * @return Whether the s22580 field is set.
     */
    boolean hasS22580();
    /**
     * <pre>
     * Flag indicating whether or not this request falls under California Cal
     * Bus &amp; Prof Code s22580 regulation.
     * </pre>
     *
     * <code>optional bool s22580 = 1;</code>
     * @return The s22580.
     */
    boolean getS22580();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.RegsExt}
   */
  public static final class RegsExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.RegsExt)
      RegsExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RegsExt.newBuilder() to construct.
    private RegsExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RegsExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RegsExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RegsExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              s22580_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_RegsExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_RegsExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.class, com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.Builder.class);
    }

    private int bitField0_;
    public static final int S22580_FIELD_NUMBER = 1;
    private boolean s22580_;
    /**
     * <pre>
     * Flag indicating whether or not this request falls under California Cal
     * Bus &amp; Prof Code s22580 regulation.
     * </pre>
     *
     * <code>optional bool s22580 = 1;</code>
     * @return Whether the s22580 field is set.
     */
    @java.lang.Override
    public boolean hasS22580() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Flag indicating whether or not this request falls under California Cal
     * Bus &amp; Prof Code s22580 regulation.
     * </pre>
     *
     * <code>optional bool s22580 = 1;</code>
     * @return The s22580.
     */
    @java.lang.Override
    public boolean getS22580() {
      return s22580_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, s22580_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, s22580_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.RegsExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.RegsExt other = (com.magnite.openrtb.v2.OpenRtbXapi.RegsExt) obj;

      if (hasS22580() != other.hasS22580()) return false;
      if (hasS22580()) {
        if (getS22580()
            != other.getS22580()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasS22580()) {
        hash = (37 * hash) + S22580_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getS22580());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.RegsExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.RegsExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.RegsExt)
        com.magnite.openrtb.v2.OpenRtbXapi.RegsExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_RegsExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_RegsExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.class, com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        s22580_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_RegsExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.RegsExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.RegsExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.RegsExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.RegsExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.RegsExt result = new com.magnite.openrtb.v2.OpenRtbXapi.RegsExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.s22580_ = s22580_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.RegsExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.RegsExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.RegsExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.getDefaultInstance()) return this;
        if (other.hasS22580()) {
          setS22580(other.getS22580());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.RegsExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.RegsExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean s22580_ ;
      /**
       * <pre>
       * Flag indicating whether or not this request falls under California Cal
       * Bus &amp; Prof Code s22580 regulation.
       * </pre>
       *
       * <code>optional bool s22580 = 1;</code>
       * @return Whether the s22580 field is set.
       */
      @java.lang.Override
      public boolean hasS22580() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Flag indicating whether or not this request falls under California Cal
       * Bus &amp; Prof Code s22580 regulation.
       * </pre>
       *
       * <code>optional bool s22580 = 1;</code>
       * @return The s22580.
       */
      @java.lang.Override
      public boolean getS22580() {
        return s22580_;
      }
      /**
       * <pre>
       * Flag indicating whether or not this request falls under California Cal
       * Bus &amp; Prof Code s22580 regulation.
       * </pre>
       *
       * <code>optional bool s22580 = 1;</code>
       * @param value The s22580 to set.
       * @return This builder for chaining.
       */
      public Builder setS22580(boolean value) {
        bitField0_ |= 0x00000001;
        s22580_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Flag indicating whether or not this request falls under California Cal
       * Bus &amp; Prof Code s22580 regulation.
       * </pre>
       *
       * <code>optional bool s22580 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearS22580() {
        bitField0_ = (bitField0_ & ~0x00000001);
        s22580_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.RegsExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.RegsExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.RegsExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.RegsExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.RegsExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<RegsExt>
        PARSER = new com.google.protobuf.AbstractParser<RegsExt>() {
      @java.lang.Override
      public RegsExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RegsExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RegsExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RegsExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.RegsExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SourceExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.SourceExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
     * render the creative and execute any trackers. When true, calls directly
     * from the server will convey device context in new “X-Device” HTTP
     * headers per the VAST 4.1 specification.
     * </pre>
     *
     * <code>optional bool ssreq = 1;</code>
     * @return Whether the ssreq field is set.
     */
    boolean hasSsreq();
    /**
     * <pre>
     * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
     * render the creative and execute any trackers. When true, calls directly
     * from the server will convey device context in new “X-Device” HTTP
     * headers per the VAST 4.1 specification.
     * </pre>
     *
     * <code>optional bool ssreq = 1;</code>
     * @return The ssreq.
     */
    boolean getSsreq();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.SourceExt}
   */
  public static final class SourceExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.SourceExt)
      SourceExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SourceExt.newBuilder() to construct.
    private SourceExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SourceExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SourceExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SourceExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              ssreq_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SourceExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SourceExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.class, com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.Builder.class);
    }

    private int bitField0_;
    public static final int SSREQ_FIELD_NUMBER = 1;
    private boolean ssreq_;
    /**
     * <pre>
     * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
     * render the creative and execute any trackers. When true, calls directly
     * from the server will convey device context in new “X-Device” HTTP
     * headers per the VAST 4.1 specification.
     * </pre>
     *
     * <code>optional bool ssreq = 1;</code>
     * @return Whether the ssreq field is set.
     */
    @java.lang.Override
    public boolean hasSsreq() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
     * render the creative and execute any trackers. When true, calls directly
     * from the server will convey device context in new “X-Device” HTTP
     * headers per the VAST 4.1 specification.
     * </pre>
     *
     * <code>optional bool ssreq = 1;</code>
     * @return The ssreq.
     */
    @java.lang.Override
    public boolean getSsreq() {
      return ssreq_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, ssreq_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, ssreq_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.SourceExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.SourceExt other = (com.magnite.openrtb.v2.OpenRtbXapi.SourceExt) obj;

      if (hasSsreq() != other.hasSsreq()) return false;
      if (hasSsreq()) {
        if (getSsreq()
            != other.getSsreq()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSsreq()) {
        hash = (37 * hash) + SSREQ_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSsreq());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.SourceExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.SourceExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.SourceExt)
        com.magnite.openrtb.v2.OpenRtbXapi.SourceExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SourceExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SourceExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.class, com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        ssreq_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SourceExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SourceExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SourceExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.SourceExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SourceExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.SourceExt result = new com.magnite.openrtb.v2.OpenRtbXapi.SourceExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ssreq_ = ssreq_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.SourceExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.SourceExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.SourceExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.getDefaultInstance()) return this;
        if (other.hasSsreq()) {
          setSsreq(other.getSsreq());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.SourceExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.SourceExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean ssreq_ ;
      /**
       * <pre>
       * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
       * render the creative and execute any trackers. When true, calls directly
       * from the server will convey device context in new “X-Device” HTTP
       * headers per the VAST 4.1 specification.
       * </pre>
       *
       * <code>optional bool ssreq = 1;</code>
       * @return Whether the ssreq field is set.
       */
      @java.lang.Override
      public boolean hasSsreq() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
       * render the creative and execute any trackers. When true, calls directly
       * from the server will convey device context in new “X-Device” HTTP
       * headers per the VAST 4.1 specification.
       * </pre>
       *
       * <code>optional bool ssreq = 1;</code>
       * @return The ssreq.
       */
      @java.lang.Override
      public boolean getSsreq() {
        return ssreq_;
      }
      /**
       * <pre>
       * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
       * render the creative and execute any trackers. When true, calls directly
       * from the server will convey device context in new “X-Device” HTTP
       * headers per the VAST 4.1 specification.
       * </pre>
       *
       * <code>optional bool ssreq = 1;</code>
       * @param value The ssreq to set.
       * @return This builder for chaining.
       */
      public Builder setSsreq(boolean value) {
        bitField0_ |= 0x00000001;
        ssreq_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies a Server-Side Ad Insertion (SSAI) request where a server will
       * render the creative and execute any trackers. When true, calls directly
       * from the server will convey device context in new “X-Device” HTTP
       * headers per the VAST 4.1 specification.
       * </pre>
       *
       * <code>optional bool ssreq = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSsreq() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ssreq_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.SourceExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.SourceExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.SourceExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.SourceExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.SourceExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SourceExt>
        PARSER = new com.google.protobuf.AbstractParser<SourceExt>() {
      @java.lang.Override
      public SourceExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SourceExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SourceExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SourceExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.SourceExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NativeExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.NativeExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.NativeExt}
   */
  public static final class NativeExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.NativeExt)
      NativeExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NativeExt.newBuilder() to construct.
    private NativeExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NativeExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NativeExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NativeExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.class, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.NativeExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return Whether the sizeId field is set.
       */
      boolean hasSizeId();
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return The sizeId.
       */
      int getSizeId();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.NativeExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.NativeExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                sizeId_ = input.readUInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int SIZE_ID_FIELD_NUMBER = 1;
      private int sizeId_;
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return Whether the sizeId field is set.
       */
      @java.lang.Override
      public boolean hasSizeId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ size ID. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 1;</code>
       * @return The sizeId.
       */
      @java.lang.Override
      public int getSizeId() {
        return sizeId_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt32(1, sizeId_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, sizeId_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp) obj;

        if (hasSizeId() != other.hasSizeId()) return false;
        if (hasSizeId()) {
          if (getSizeId()
              != other.getSizeId()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSizeId()) {
          hash = (37 * hash) + SIZE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getSizeId();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.NativeExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.NativeExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          sizeId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.sizeId_ = sizeId_;
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.getDefaultInstance()) return this;
          if (other.hasSizeId()) {
            setSizeId(other.getSizeId());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int sizeId_ ;
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return Whether the sizeId field is set.
         */
        @java.lang.Override
        public boolean hasSizeId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return The sizeId.
         */
        @java.lang.Override
        public int getSizeId() {
          return sizeId_;
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @param value The sizeId to set.
         * @return This builder for chaining.
         */
        public Builder setSizeId(int value) {
          bitField0_ |= 0x00000001;
          sizeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ size ID. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSizeId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sizeId_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.NativeExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.NativeExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.NativeExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.NativeExt other = (com.magnite.openrtb.v2.OpenRtbXapi.NativeExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.NativeExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.NativeExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.NativeExt)
        com.magnite.openrtb.v2.OpenRtbXapi.NativeExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.class, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.NativeExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.NativeExt result = new com.magnite.openrtb.v2.OpenRtbXapi.NativeExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.NativeExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.NativeExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.NativeExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.NativeExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.NativeExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.NativeExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.NativeExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.NativeExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.NativeExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.NativeExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<NativeExt>
        PARSER = new com.google.protobuf.AbstractParser<NativeExt>() {
      @java.lang.Override
      public NativeExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NativeExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<NativeExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NativeExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.NativeExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NativeRequestExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.NativeRequestExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Flag to declare support for Native Ad Choices.
     * </pre>
     *
     * <code>optional bool privacy = 1;</code>
     * @return Whether the privacy field is set.
     */
    boolean hasPrivacy();
    /**
     * <pre>
     * Flag to declare support for Native Ad Choices.
     * </pre>
     *
     * <code>optional bool privacy = 1;</code>
     * @return The privacy.
     */
    boolean getPrivacy();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.NativeRequestExt}
   */
  public static final class NativeRequestExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.NativeRequestExt)
      NativeRequestExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NativeRequestExt.newBuilder() to construct.
    private NativeRequestExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NativeRequestExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NativeRequestExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NativeRequestExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              privacy_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeRequestExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeRequestExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.class, com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.Builder.class);
    }

    private int bitField0_;
    public static final int PRIVACY_FIELD_NUMBER = 1;
    private boolean privacy_;
    /**
     * <pre>
     * Flag to declare support for Native Ad Choices.
     * </pre>
     *
     * <code>optional bool privacy = 1;</code>
     * @return Whether the privacy field is set.
     */
    @java.lang.Override
    public boolean hasPrivacy() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Flag to declare support for Native Ad Choices.
     * </pre>
     *
     * <code>optional bool privacy = 1;</code>
     * @return The privacy.
     */
    @java.lang.Override
    public boolean getPrivacy() {
      return privacy_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, privacy_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, privacy_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt other = (com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt) obj;

      if (hasPrivacy() != other.hasPrivacy()) return false;
      if (hasPrivacy()) {
        if (getPrivacy()
            != other.getPrivacy()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPrivacy()) {
        hash = (37 * hash) + PRIVACY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPrivacy());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.NativeRequestExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.NativeRequestExt)
        com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeRequestExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeRequestExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.class, com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        privacy_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_NativeRequestExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt result = new com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.privacy_ = privacy_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.getDefaultInstance()) return this;
        if (other.hasPrivacy()) {
          setPrivacy(other.getPrivacy());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean privacy_ ;
      /**
       * <pre>
       * Flag to declare support for Native Ad Choices.
       * </pre>
       *
       * <code>optional bool privacy = 1;</code>
       * @return Whether the privacy field is set.
       */
      @java.lang.Override
      public boolean hasPrivacy() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Flag to declare support for Native Ad Choices.
       * </pre>
       *
       * <code>optional bool privacy = 1;</code>
       * @return The privacy.
       */
      @java.lang.Override
      public boolean getPrivacy() {
        return privacy_;
      }
      /**
       * <pre>
       * Flag to declare support for Native Ad Choices.
       * </pre>
       *
       * <code>optional bool privacy = 1;</code>
       * @param value The privacy to set.
       * @return This builder for chaining.
       */
      public Builder setPrivacy(boolean value) {
        bitField0_ |= 0x00000001;
        privacy_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Flag to declare support for Native Ad Choices.
       * </pre>
       *
       * <code>optional bool privacy = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPrivacy() {
        bitField0_ = (bitField0_ & ~0x00000001);
        privacy_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.NativeRequestExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.NativeRequestExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<NativeRequestExt>
        PARSER = new com.google.protobuf.AbstractParser<NativeRequestExt>() {
      @java.lang.Override
      public NativeRequestExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NativeRequestExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<NativeRequestExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NativeRequestExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BidResponseExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BidResponseExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.BidResponseExt}
   */
  public static final class BidResponseExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BidResponseExt)
      BidResponseExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BidResponseExt.newBuilder() to construct.
    private BidResponseExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BidResponseExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BidResponseExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BidResponseExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BidResponseExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Status code set to 0 if the bid array will contain an ad.
       * Status code set to 32 for proxy bid wins.
       * </pre>
       *
       * <code>optional int32 statuscode = 1;</code>
       * @return Whether the statuscode field is set.
       */
      boolean hasStatuscode();
      /**
       * <pre>
       * Status code set to 0 if the bid array will contain an ad.
       * Status code set to 32 for proxy bid wins.
       * </pre>
       *
       * <code>optional int32 statuscode = 1;</code>
       * @return The statuscode.
       */
      int getStatuscode();

      /**
       * <pre>
       * If status code is set, this field can be used to provide additional
       * information.
       * </pre>
       *
       * <code>optional string statusmsg = 2;</code>
       * @return Whether the statusmsg field is set.
       */
      boolean hasStatusmsg();
      /**
       * <pre>
       * If status code is set, this field can be used to provide additional
       * information.
       * </pre>
       *
       * <code>optional string statusmsg = 2;</code>
       * @return The statusmsg.
       */
      java.lang.String getStatusmsg();
      /**
       * <pre>
       * If status code is set, this field can be used to provide additional
       * information.
       * </pre>
       *
       * <code>optional string statusmsg = 2;</code>
       * @return The bytes for statusmsg.
       */
      com.google.protobuf.ByteString
          getStatusmsgBytes();

      /**
       * <pre>
       * Response time, rounded up to the next multiple of 10 milliseconds.
       * </pre>
       *
       * <code>optional int32 time = 3;</code>
       * @return Whether the time field is set.
       */
      boolean hasTime();
      /**
       * <pre>
       * Response time, rounded up to the next multiple of 10 milliseconds.
       * </pre>
       *
       * <code>optional int32 time = 3;</code>
       * @return The time.
       */
      int getTime();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BidResponseExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BidResponseExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        statusmsg_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                statuscode_ = input.readInt32();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                statusmsg_ = bs;
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                time_ = input.readInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int STATUSCODE_FIELD_NUMBER = 1;
      private int statuscode_;
      /**
       * <pre>
       * Status code set to 0 if the bid array will contain an ad.
       * Status code set to 32 for proxy bid wins.
       * </pre>
       *
       * <code>optional int32 statuscode = 1;</code>
       * @return Whether the statuscode field is set.
       */
      @java.lang.Override
      public boolean hasStatuscode() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Status code set to 0 if the bid array will contain an ad.
       * Status code set to 32 for proxy bid wins.
       * </pre>
       *
       * <code>optional int32 statuscode = 1;</code>
       * @return The statuscode.
       */
      @java.lang.Override
      public int getStatuscode() {
        return statuscode_;
      }

      public static final int STATUSMSG_FIELD_NUMBER = 2;
      private volatile java.lang.Object statusmsg_;
      /**
       * <pre>
       * If status code is set, this field can be used to provide additional
       * information.
       * </pre>
       *
       * <code>optional string statusmsg = 2;</code>
       * @return Whether the statusmsg field is set.
       */
      @java.lang.Override
      public boolean hasStatusmsg() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * If status code is set, this field can be used to provide additional
       * information.
       * </pre>
       *
       * <code>optional string statusmsg = 2;</code>
       * @return The statusmsg.
       */
      @java.lang.Override
      public java.lang.String getStatusmsg() {
        java.lang.Object ref = statusmsg_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            statusmsg_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * If status code is set, this field can be used to provide additional
       * information.
       * </pre>
       *
       * <code>optional string statusmsg = 2;</code>
       * @return The bytes for statusmsg.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getStatusmsgBytes() {
        java.lang.Object ref = statusmsg_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          statusmsg_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TIME_FIELD_NUMBER = 3;
      private int time_;
      /**
       * <pre>
       * Response time, rounded up to the next multiple of 10 milliseconds.
       * </pre>
       *
       * <code>optional int32 time = 3;</code>
       * @return Whether the time field is set.
       */
      @java.lang.Override
      public boolean hasTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Response time, rounded up to the next multiple of 10 milliseconds.
       * </pre>
       *
       * <code>optional int32 time = 3;</code>
       * @return The time.
       */
      @java.lang.Override
      public int getTime() {
        return time_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, statuscode_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, statusmsg_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeInt32(3, time_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, statuscode_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, statusmsg_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, time_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp) obj;

        if (hasStatuscode() != other.hasStatuscode()) return false;
        if (hasStatuscode()) {
          if (getStatuscode()
              != other.getStatuscode()) return false;
        }
        if (hasStatusmsg() != other.hasStatusmsg()) return false;
        if (hasStatusmsg()) {
          if (!getStatusmsg()
              .equals(other.getStatusmsg())) return false;
        }
        if (hasTime() != other.hasTime()) return false;
        if (hasTime()) {
          if (getTime()
              != other.getTime()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStatuscode()) {
          hash = (37 * hash) + STATUSCODE_FIELD_NUMBER;
          hash = (53 * hash) + getStatuscode();
        }
        if (hasStatusmsg()) {
          hash = (37 * hash) + STATUSMSG_FIELD_NUMBER;
          hash = (53 * hash) + getStatusmsg().hashCode();
        }
        if (hasTime()) {
          hash = (37 * hash) + TIME_FIELD_NUMBER;
          hash = (53 * hash) + getTime();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.BidResponseExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BidResponseExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          statuscode_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          statusmsg_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          time_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.statuscode_ = statuscode_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.statusmsg_ = statusmsg_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.time_ = time_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.getDefaultInstance()) return this;
          if (other.hasStatuscode()) {
            setStatuscode(other.getStatuscode());
          }
          if (other.hasStatusmsg()) {
            bitField0_ |= 0x00000002;
            statusmsg_ = other.statusmsg_;
            onChanged();
          }
          if (other.hasTime()) {
            setTime(other.getTime());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int statuscode_ ;
        /**
         * <pre>
         * Status code set to 0 if the bid array will contain an ad.
         * Status code set to 32 for proxy bid wins.
         * </pre>
         *
         * <code>optional int32 statuscode = 1;</code>
         * @return Whether the statuscode field is set.
         */
        @java.lang.Override
        public boolean hasStatuscode() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Status code set to 0 if the bid array will contain an ad.
         * Status code set to 32 for proxy bid wins.
         * </pre>
         *
         * <code>optional int32 statuscode = 1;</code>
         * @return The statuscode.
         */
        @java.lang.Override
        public int getStatuscode() {
          return statuscode_;
        }
        /**
         * <pre>
         * Status code set to 0 if the bid array will contain an ad.
         * Status code set to 32 for proxy bid wins.
         * </pre>
         *
         * <code>optional int32 statuscode = 1;</code>
         * @param value The statuscode to set.
         * @return This builder for chaining.
         */
        public Builder setStatuscode(int value) {
          bitField0_ |= 0x00000001;
          statuscode_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Status code set to 0 if the bid array will contain an ad.
         * Status code set to 32 for proxy bid wins.
         * </pre>
         *
         * <code>optional int32 statuscode = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearStatuscode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          statuscode_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object statusmsg_ = "";
        /**
         * <pre>
         * If status code is set, this field can be used to provide additional
         * information.
         * </pre>
         *
         * <code>optional string statusmsg = 2;</code>
         * @return Whether the statusmsg field is set.
         */
        public boolean hasStatusmsg() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * If status code is set, this field can be used to provide additional
         * information.
         * </pre>
         *
         * <code>optional string statusmsg = 2;</code>
         * @return The statusmsg.
         */
        public java.lang.String getStatusmsg() {
          java.lang.Object ref = statusmsg_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              statusmsg_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * If status code is set, this field can be used to provide additional
         * information.
         * </pre>
         *
         * <code>optional string statusmsg = 2;</code>
         * @return The bytes for statusmsg.
         */
        public com.google.protobuf.ByteString
            getStatusmsgBytes() {
          java.lang.Object ref = statusmsg_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            statusmsg_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * If status code is set, this field can be used to provide additional
         * information.
         * </pre>
         *
         * <code>optional string statusmsg = 2;</code>
         * @param value The statusmsg to set.
         * @return This builder for chaining.
         */
        public Builder setStatusmsg(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          statusmsg_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * If status code is set, this field can be used to provide additional
         * information.
         * </pre>
         *
         * <code>optional string statusmsg = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearStatusmsg() {
          bitField0_ = (bitField0_ & ~0x00000002);
          statusmsg_ = getDefaultInstance().getStatusmsg();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * If status code is set, this field can be used to provide additional
         * information.
         * </pre>
         *
         * <code>optional string statusmsg = 2;</code>
         * @param value The bytes for statusmsg to set.
         * @return This builder for chaining.
         */
        public Builder setStatusmsgBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          statusmsg_ = value;
          onChanged();
          return this;
        }

        private int time_ ;
        /**
         * <pre>
         * Response time, rounded up to the next multiple of 10 milliseconds.
         * </pre>
         *
         * <code>optional int32 time = 3;</code>
         * @return Whether the time field is set.
         */
        @java.lang.Override
        public boolean hasTime() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * Response time, rounded up to the next multiple of 10 milliseconds.
         * </pre>
         *
         * <code>optional int32 time = 3;</code>
         * @return The time.
         */
        @java.lang.Override
        public int getTime() {
          return time_;
        }
        /**
         * <pre>
         * Response time, rounded up to the next multiple of 10 milliseconds.
         * </pre>
         *
         * <code>optional int32 time = 3;</code>
         * @param value The time to set.
         * @return This builder for chaining.
         */
        public Builder setTime(int value) {
          bitField0_ |= 0x00000004;
          time_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Response time, rounded up to the next multiple of 10 milliseconds.
         * </pre>
         *
         * <code>optional int32 time = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTime() {
          bitField0_ = (bitField0_ & ~0x00000004);
          time_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BidResponseExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BidResponseExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt other = (com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BidResponseExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BidResponseExt)
        com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidResponseExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt result = new com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidResponseExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BidResponseExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BidResponseExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BidResponseExt>
        PARSER = new com.google.protobuf.AbstractParser<BidResponseExt>() {
      @java.lang.Override
      public BidResponseExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BidResponseExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BidResponseExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BidResponseExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SeatBidExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.SeatBidExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.SeatBidExt}
   */
  public static final class SeatBidExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.SeatBidExt)
      SeatBidExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SeatBidExt.newBuilder() to construct.
    private SeatBidExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SeatBidExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SeatBidExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SeatBidExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.class, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.SeatBidExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ ID of the bidder on whose behalf the bid(s) are made.
       * </pre>
       *
       * <code>optional string buyer = 1;</code>
       * @return Whether the buyer field is set.
       */
      boolean hasBuyer();
      /**
       * <pre>
       * DV+ ID of the bidder on whose behalf the bid(s) are made.
       * </pre>
       *
       * <code>optional string buyer = 1;</code>
       * @return The buyer.
       */
      java.lang.String getBuyer();
      /**
       * <pre>
       * DV+ ID of the bidder on whose behalf the bid(s) are made.
       * </pre>
       *
       * <code>optional string buyer = 1;</code>
       * @return The bytes for buyer.
       */
      com.google.protobuf.ByteString
          getBuyerBytes();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.SeatBidExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.SeatBidExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        buyer_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                buyer_ = bs;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int BUYER_FIELD_NUMBER = 1;
      private volatile java.lang.Object buyer_;
      /**
       * <pre>
       * DV+ ID of the bidder on whose behalf the bid(s) are made.
       * </pre>
       *
       * <code>optional string buyer = 1;</code>
       * @return Whether the buyer field is set.
       */
      @java.lang.Override
      public boolean hasBuyer() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ ID of the bidder on whose behalf the bid(s) are made.
       * </pre>
       *
       * <code>optional string buyer = 1;</code>
       * @return The buyer.
       */
      @java.lang.Override
      public java.lang.String getBuyer() {
        java.lang.Object ref = buyer_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            buyer_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * DV+ ID of the bidder on whose behalf the bid(s) are made.
       * </pre>
       *
       * <code>optional string buyer = 1;</code>
       * @return The bytes for buyer.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getBuyerBytes() {
        java.lang.Object ref = buyer_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          buyer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, buyer_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, buyer_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp) obj;

        if (hasBuyer() != other.hasBuyer()) return false;
        if (hasBuyer()) {
          if (!getBuyer()
              .equals(other.getBuyer())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasBuyer()) {
          hash = (37 * hash) + BUYER_FIELD_NUMBER;
          hash = (53 * hash) + getBuyer().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.SeatBidExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.SeatBidExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          buyer_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.buyer_ = buyer_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.getDefaultInstance()) return this;
          if (other.hasBuyer()) {
            bitField0_ |= 0x00000001;
            buyer_ = other.buyer_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object buyer_ = "";
        /**
         * <pre>
         * DV+ ID of the bidder on whose behalf the bid(s) are made.
         * </pre>
         *
         * <code>optional string buyer = 1;</code>
         * @return Whether the buyer field is set.
         */
        public boolean hasBuyer() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ ID of the bidder on whose behalf the bid(s) are made.
         * </pre>
         *
         * <code>optional string buyer = 1;</code>
         * @return The buyer.
         */
        public java.lang.String getBuyer() {
          java.lang.Object ref = buyer_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              buyer_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * DV+ ID of the bidder on whose behalf the bid(s) are made.
         * </pre>
         *
         * <code>optional string buyer = 1;</code>
         * @return The bytes for buyer.
         */
        public com.google.protobuf.ByteString
            getBuyerBytes() {
          java.lang.Object ref = buyer_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            buyer_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * DV+ ID of the bidder on whose behalf the bid(s) are made.
         * </pre>
         *
         * <code>optional string buyer = 1;</code>
         * @param value The buyer to set.
         * @return This builder for chaining.
         */
        public Builder setBuyer(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          buyer_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ ID of the bidder on whose behalf the bid(s) are made.
         * </pre>
         *
         * <code>optional string buyer = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearBuyer() {
          bitField0_ = (bitField0_ & ~0x00000001);
          buyer_ = getDefaultInstance().getBuyer();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ ID of the bidder on whose behalf the bid(s) are made.
         * </pre>
         *
         * <code>optional string buyer = 1;</code>
         * @param value The bytes for buyer to set.
         * @return This builder for chaining.
         */
        public Builder setBuyerBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          buyer_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.SeatBidExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.SeatBidExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt other = (com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.SeatBidExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.SeatBidExt)
        com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.class, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_SeatBidExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt result = new com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.SeatBidExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.SeatBidExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.SeatBidExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SeatBidExt>
        PARSER = new com.google.protobuf.AbstractParser<SeatBidExt>() {
      @java.lang.Override
      public SeatBidExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SeatBidExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SeatBidExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SeatBidExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BidExtOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BidExt)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    boolean hasRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
     * @return The rp.
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp getRp();
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
     */
    com.magnite.openrtb.v2.OpenRtbXapi.BidExt.RpOrBuilder getRpOrBuilder();
  }
  /**
   * Protobuf type {@code com.magnite.openrtb.v2.BidExt}
   */
  public static final class BidExt extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BidExt)
      BidExtOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BidExt.newBuilder() to construct.
    private BidExt(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BidExt() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BidExt();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BidExt(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = rp_.toBuilder();
              }
              rp_ = input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rp_);
                rp_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.magnite.openrtb.v2.OpenRtbXapi.BidExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Builder.class);
    }

    public interface RpOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.magnite.openrtb.v2.BidExt.Rp)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
       * </pre>
       *
       * <code>optional int32 advid = 1;</code>
       * @return Whether the advid field is set.
       */
      boolean hasAdvid();
      /**
       * <pre>
       * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
       * </pre>
       *
       * <code>optional int32 advid = 1;</code>
       * @return The advid.
       */
      int getAdvid();

      /**
       * <pre>
       * The MIME content type with which the "adm" property of the bid is
       * encoded for Banner objects only.
       * </pre>
       *
       * <code>optional string mime = 2;</code>
       * @return Whether the mime field is set.
       */
      boolean hasMime();
      /**
       * <pre>
       * The MIME content type with which the "adm" property of the bid is
       * encoded for Banner objects only.
       * </pre>
       *
       * <code>optional string mime = 2;</code>
       * @return The mime.
       */
      java.lang.String getMime();
      /**
       * <pre>
       * The MIME content type with which the "adm" property of the bid is
       * encoded for Banner objects only.
       * </pre>
       *
       * <code>optional string mime = 2;</code>
       * @return The bytes for mime.
       */
      com.google.protobuf.ByteString
          getMimeBytes();

      /**
       * <pre>
       * The type of creative returned. This can be one of banner or video.
       * For banner and video, the creative is sent as part of adm.
       * </pre>
       *
       * <code>optional string adtype = 3;</code>
       * @return Whether the adtype field is set.
       */
      boolean hasAdtype();
      /**
       * <pre>
       * The type of creative returned. This can be one of banner or video.
       * For banner and video, the creative is sent as part of adm.
       * </pre>
       *
       * <code>optional string adtype = 3;</code>
       * @return The adtype.
       */
      java.lang.String getAdtype();
      /**
       * <pre>
       * The type of creative returned. This can be one of banner or video.
       * For banner and video, the creative is sent as part of adm.
       * </pre>
       *
       * <code>optional string adtype = 3;</code>
       * @return The bytes for adtype.
       */
      com.google.protobuf.ByteString
          getAdtypeBytes();

      /**
       * <pre>
       * DV+ size ID of winning ad size. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 4;</code>
       * @return Whether the sizeId field is set.
       */
      boolean hasSizeId();
      /**
       * <pre>
       * DV+ size ID of winning ad size. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 4;</code>
       * @return The sizeId.
       */
      int getSizeId();

      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> 
          getTargetingList();
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTargeting(int index);
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      int getTargetingCount();
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTargetingOrBuilderList();
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetingOrBuilder(
          int index);

      /**
       * <pre>
       * Supported API framework for this impression. Refer to the IAB
       * OpenRTB ApiFramework enum.
       * </pre>
       *
       * <code>optional uint32 creativeapi = 6;</code>
       * @return Whether the creativeapi field is set.
       */
      boolean hasCreativeapi();
      /**
       * <pre>
       * Supported API framework for this impression. Refer to the IAB
       * OpenRTB ApiFramework enum.
       * </pre>
       *
       * <code>optional uint32 creativeapi = 6;</code>
       * @return The creativeapi.
       */
      int getCreativeapi();

      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @return A list containing the viewabilityvendors.
       */
      java.util.List<java.lang.String>
          getViewabilityvendorsList();
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @return The count of viewabilityvendors.
       */
      int getViewabilityvendorsCount();
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @param index The index of the element to return.
       * @return The viewabilityvendors at the given index.
       */
      java.lang.String getViewabilityvendors(int index);
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the viewabilityvendors at the given index.
       */
      com.google.protobuf.ByteString
          getViewabilityvendorsBytes(int index);

      /**
       * <pre>
       * Indicates if the price is estimated (e.g., where pricing is not
       * CPM-based), 0 = not estimated, 1 = estimated.
       * </pre>
       *
       * <code>optional int32 estimated = 8;</code>
       * @return Whether the estimated field is set.
       */
      boolean hasEstimated();
      /**
       * <pre>
       * Indicates if the price is estimated (e.g., where pricing is not
       * CPM-based), 0 = not estimated, 1 = estimated.
       * </pre>
       *
       * <code>optional int32 estimated = 8;</code>
       * @return The estimated.
       */
      int getEstimated();

      /**
       * <pre>
       * Bid price net of all fees.
       * </pre>
       *
       * <code>optional double adjustbid = 9;</code>
       * @return Whether the adjustbid field is set.
       */
      boolean hasAdjustbid();
      /**
       * <pre>
       * Bid price net of all fees.
       * </pre>
       *
       * <code>optional double adjustbid = 9;</code>
       * @return The adjustbid.
       */
      double getAdjustbid();

      /**
       * <pre>
       * Temporary field to allow for transition period moving from string to int
       * </pre>
       *
       * <code>optional string deprecated_pmptier = 10;</code>
       * @return Whether the deprecatedPmptier field is set.
       */
      boolean hasDeprecatedPmptier();
      /**
       * <pre>
       * Temporary field to allow for transition period moving from string to int
       * </pre>
       *
       * <code>optional string deprecated_pmptier = 10;</code>
       * @return The deprecatedPmptier.
       */
      java.lang.String getDeprecatedPmptier();
      /**
       * <pre>
       * Temporary field to allow for transition period moving from string to int
       * </pre>
       *
       * <code>optional string deprecated_pmptier = 10;</code>
       * @return The bytes for deprecatedPmptier.
       */
      com.google.protobuf.ByteString
          getDeprecatedPmptierBytes();

      /**
       * <pre>
       * RTB ad quality ID.
       * </pre>
       *
       * <code>optional string aqid = 11;</code>
       * @return Whether the aqid field is set.
       */
      boolean hasAqid();
      /**
       * <pre>
       * RTB ad quality ID.
       * </pre>
       *
       * <code>optional string aqid = 11;</code>
       * @return The aqid.
       */
      java.lang.String getAqid();
      /**
       * <pre>
       * RTB ad quality ID.
       * </pre>
       *
       * <code>optional string aqid = 11;</code>
       * @return The bytes for aqid.
       */
      com.google.protobuf.ByteString
          getAqidBytes();

      /**
       * <pre>
       * Advertiser industry ID.
       * </pre>
       *
       * <code>repeated int32 aindid = 12;</code>
       * @return A list containing the aindid.
       */
      java.util.List<java.lang.Integer> getAindidList();
      /**
       * <pre>
       * Advertiser industry ID.
       * </pre>
       *
       * <code>repeated int32 aindid = 12;</code>
       * @return The count of aindid.
       */
      int getAindidCount();
      /**
       * <pre>
       * Advertiser industry ID.
       * </pre>
       *
       * <code>repeated int32 aindid = 12;</code>
       * @param index The index of the element to return.
       * @return The aindid at the given index.
       */
      int getAindid(int index);

      /**
       * <pre>
       * URL to be called to signal the billable event.
       * </pre>
       *
       * <code>optional string burl = 13;</code>
       * @return Whether the burl field is set.
       */
      boolean hasBurl();
      /**
       * <pre>
       * URL to be called to signal the billable event.
       * </pre>
       *
       * <code>optional string burl = 13;</code>
       * @return The burl.
       */
      java.lang.String getBurl();
      /**
       * <pre>
       * URL to be called to signal the billable event.
       * </pre>
       *
       * <code>optional string burl = 13;</code>
       * @return The bytes for burl.
       */
      com.google.protobuf.ByteString
          getBurlBytes();

      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @return A list containing the imptrackers.
       */
      java.util.List<java.lang.String>
          getImptrackersList();
      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @return The count of imptrackers.
       */
      int getImptrackersCount();
      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @param index The index of the element to return.
       * @return The imptrackers at the given index.
       */
      java.lang.String getImptrackers(int index);
      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @param index The index of the value to return.
       * @return The bytes of the imptrackers at the given index.
       */
      com.google.protobuf.ByteString
          getImptrackersBytes(int index);

      /**
       * <pre>
       * New field for pmptier to allow for type int
       * Indicates the private marketplace (PMP) tier of the bid, where 1 and
       * 2 are reserved for future use, 3 = Private marketplace, 4 = First
       * Right marketplace. Omitted for open auction.
       * </pre>
       *
       * <code>optional int32 pmptier = 15;</code>
       * @return Whether the pmptier field is set.
       */
      boolean hasPmptier();
      /**
       * <pre>
       * New field for pmptier to allow for type int
       * Indicates the private marketplace (PMP) tier of the bid, where 1 and
       * 2 are reserved for future use, 3 = Private marketplace, 4 = First
       * Right marketplace. Omitted for open auction.
       * </pre>
       *
       * <code>optional int32 pmptier = 15;</code>
       * @return The pmptier.
       */
      int getPmptier();
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BidExt.Rp}
     */
    public static final class Rp extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.magnite.openrtb.v2.BidExt.Rp)
        RpOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Rp.newBuilder() to construct.
      private Rp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Rp() {
        mime_ = "";
        adtype_ = "";
        targeting_ = java.util.Collections.emptyList();
        viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        deprecatedPmptier_ = "";
        aqid_ = "";
        aindid_ = emptyIntList();
        burl_ = "";
        imptrackers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Rp();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Rp(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                advid_ = input.readInt32();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                mime_ = bs;
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                adtype_ = bs;
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                sizeId_ = input.readUInt32();
                break;
              }
              case 42: {
                if (!((mutable_bitField0_ & 0x00000010) != 0)) {
                  targeting_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>();
                  mutable_bitField0_ |= 0x00000010;
                }
                targeting_.add(
                    input.readMessage(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.PARSER, extensionRegistry));
                break;
              }
              case 48: {
                bitField0_ |= 0x00000010;
                creativeapi_ = input.readUInt32();
                break;
              }
              case 58: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000040) != 0)) {
                  viewabilityvendors_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000040;
                }
                viewabilityvendors_.add(bs);
                break;
              }
              case 64: {
                bitField0_ |= 0x00000020;
                estimated_ = input.readInt32();
                break;
              }
              case 73: {
                bitField0_ |= 0x00000040;
                adjustbid_ = input.readDouble();
                break;
              }
              case 82: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000080;
                deprecatedPmptier_ = bs;
                break;
              }
              case 90: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000100;
                aqid_ = bs;
                break;
              }
              case 96: {
                if (!((mutable_bitField0_ & 0x00000800) != 0)) {
                  aindid_ = newIntList();
                  mutable_bitField0_ |= 0x00000800;
                }
                aindid_.addInt(input.readInt32());
                break;
              }
              case 98: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000800) != 0) && input.getBytesUntilLimit() > 0) {
                  aindid_ = newIntList();
                  mutable_bitField0_ |= 0x00000800;
                }
                while (input.getBytesUntilLimit() > 0) {
                  aindid_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 106: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000200;
                burl_ = bs;
                break;
              }
              case 114: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00002000) != 0)) {
                  imptrackers_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00002000;
                }
                imptrackers_.add(bs);
                break;
              }
              case 120: {
                bitField0_ |= 0x00000400;
                pmptier_ = input.readInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000010) != 0)) {
            targeting_ = java.util.Collections.unmodifiableList(targeting_);
          }
          if (((mutable_bitField0_ & 0x00000040) != 0)) {
            viewabilityvendors_ = viewabilityvendors_.getUnmodifiableView();
          }
          if (((mutable_bitField0_ & 0x00000800) != 0)) {
            aindid_.makeImmutable(); // C
          }
          if (((mutable_bitField0_ & 0x00002000) != 0)) {
            imptrackers_ = imptrackers_.getUnmodifiableView();
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_Rp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_Rp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder.class);
      }

      private int bitField0_;
      public static final int ADVID_FIELD_NUMBER = 1;
      private int advid_;
      /**
       * <pre>
       * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
       * </pre>
       *
       * <code>optional int32 advid = 1;</code>
       * @return Whether the advid field is set.
       */
      @java.lang.Override
      public boolean hasAdvid() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
       * </pre>
       *
       * <code>optional int32 advid = 1;</code>
       * @return The advid.
       */
      @java.lang.Override
      public int getAdvid() {
        return advid_;
      }

      public static final int MIME_FIELD_NUMBER = 2;
      private volatile java.lang.Object mime_;
      /**
       * <pre>
       * The MIME content type with which the "adm" property of the bid is
       * encoded for Banner objects only.
       * </pre>
       *
       * <code>optional string mime = 2;</code>
       * @return Whether the mime field is set.
       */
      @java.lang.Override
      public boolean hasMime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The MIME content type with which the "adm" property of the bid is
       * encoded for Banner objects only.
       * </pre>
       *
       * <code>optional string mime = 2;</code>
       * @return The mime.
       */
      @java.lang.Override
      public java.lang.String getMime() {
        java.lang.Object ref = mime_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mime_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * The MIME content type with which the "adm" property of the bid is
       * encoded for Banner objects only.
       * </pre>
       *
       * <code>optional string mime = 2;</code>
       * @return The bytes for mime.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getMimeBytes() {
        java.lang.Object ref = mime_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mime_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int ADTYPE_FIELD_NUMBER = 3;
      private volatile java.lang.Object adtype_;
      /**
       * <pre>
       * The type of creative returned. This can be one of banner or video.
       * For banner and video, the creative is sent as part of adm.
       * </pre>
       *
       * <code>optional string adtype = 3;</code>
       * @return Whether the adtype field is set.
       */
      @java.lang.Override
      public boolean hasAdtype() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The type of creative returned. This can be one of banner or video.
       * For banner and video, the creative is sent as part of adm.
       * </pre>
       *
       * <code>optional string adtype = 3;</code>
       * @return The adtype.
       */
      @java.lang.Override
      public java.lang.String getAdtype() {
        java.lang.Object ref = adtype_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            adtype_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * The type of creative returned. This can be one of banner or video.
       * For banner and video, the creative is sent as part of adm.
       * </pre>
       *
       * <code>optional string adtype = 3;</code>
       * @return The bytes for adtype.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAdtypeBytes() {
        java.lang.Object ref = adtype_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          adtype_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SIZE_ID_FIELD_NUMBER = 4;
      private int sizeId_;
      /**
       * <pre>
       * DV+ size ID of winning ad size. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 4;</code>
       * @return Whether the sizeId field is set.
       */
      @java.lang.Override
      public boolean hasSizeId() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * DV+ size ID of winning ad size. Refer to
       * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
       * </pre>
       *
       * <code>optional uint32 size_id = 4;</code>
       * @return The sizeId.
       */
      @java.lang.Override
      public int getSizeId() {
        return sizeId_;
      }

      public static final int TARGETING_FIELD_NUMBER = 5;
      private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> targeting_;
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      @java.lang.Override
      public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTargetingList() {
        return targeting_;
      }
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
          getTargetingOrBuilderList() {
        return targeting_;
      }
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      @java.lang.Override
      public int getTargetingCount() {
        return targeting_.size();
      }
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTargeting(int index) {
        return targeting_.get(index);
      }
      /**
       * <pre>
       * Custom key/values used for targeting line items in a publisher ad
       * server.
       * </pre>
       *
       * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
       */
      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetingOrBuilder(
          int index) {
        return targeting_.get(index);
      }

      public static final int CREATIVEAPI_FIELD_NUMBER = 6;
      private int creativeapi_;
      /**
       * <pre>
       * Supported API framework for this impression. Refer to the IAB
       * OpenRTB ApiFramework enum.
       * </pre>
       *
       * <code>optional uint32 creativeapi = 6;</code>
       * @return Whether the creativeapi field is set.
       */
      @java.lang.Override
      public boolean hasCreativeapi() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Supported API framework for this impression. Refer to the IAB
       * OpenRTB ApiFramework enum.
       * </pre>
       *
       * <code>optional uint32 creativeapi = 6;</code>
       * @return The creativeapi.
       */
      @java.lang.Override
      public int getCreativeapi() {
        return creativeapi_;
      }

      public static final int VIEWABILITYVENDORS_FIELD_NUMBER = 7;
      private com.google.protobuf.LazyStringList viewabilityvendors_;
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @return A list containing the viewabilityvendors.
       */
      public com.google.protobuf.ProtocolStringList
          getViewabilityvendorsList() {
        return viewabilityvendors_;
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @return The count of viewabilityvendors.
       */
      public int getViewabilityvendorsCount() {
        return viewabilityvendors_.size();
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @param index The index of the element to return.
       * @return The viewabilityvendors at the given index.
       */
      public java.lang.String getViewabilityvendors(int index) {
        return viewabilityvendors_.get(index);
      }
      /**
       * <pre>
       * Supported viewability vendors. For list of supported vendors, visit:
       * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
       * </pre>
       *
       * <code>repeated string viewabilityvendors = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the viewabilityvendors at the given index.
       */
      public com.google.protobuf.ByteString
          getViewabilityvendorsBytes(int index) {
        return viewabilityvendors_.getByteString(index);
      }

      public static final int ESTIMATED_FIELD_NUMBER = 8;
      private int estimated_;
      /**
       * <pre>
       * Indicates if the price is estimated (e.g., where pricing is not
       * CPM-based), 0 = not estimated, 1 = estimated.
       * </pre>
       *
       * <code>optional int32 estimated = 8;</code>
       * @return Whether the estimated field is set.
       */
      @java.lang.Override
      public boolean hasEstimated() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Indicates if the price is estimated (e.g., where pricing is not
       * CPM-based), 0 = not estimated, 1 = estimated.
       * </pre>
       *
       * <code>optional int32 estimated = 8;</code>
       * @return The estimated.
       */
      @java.lang.Override
      public int getEstimated() {
        return estimated_;
      }

      public static final int ADJUSTBID_FIELD_NUMBER = 9;
      private double adjustbid_;
      /**
       * <pre>
       * Bid price net of all fees.
       * </pre>
       *
       * <code>optional double adjustbid = 9;</code>
       * @return Whether the adjustbid field is set.
       */
      @java.lang.Override
      public boolean hasAdjustbid() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Bid price net of all fees.
       * </pre>
       *
       * <code>optional double adjustbid = 9;</code>
       * @return The adjustbid.
       */
      @java.lang.Override
      public double getAdjustbid() {
        return adjustbid_;
      }

      public static final int DEPRECATED_PMPTIER_FIELD_NUMBER = 10;
      private volatile java.lang.Object deprecatedPmptier_;
      /**
       * <pre>
       * Temporary field to allow for transition period moving from string to int
       * </pre>
       *
       * <code>optional string deprecated_pmptier = 10;</code>
       * @return Whether the deprecatedPmptier field is set.
       */
      @java.lang.Override
      public boolean hasDeprecatedPmptier() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Temporary field to allow for transition period moving from string to int
       * </pre>
       *
       * <code>optional string deprecated_pmptier = 10;</code>
       * @return The deprecatedPmptier.
       */
      @java.lang.Override
      public java.lang.String getDeprecatedPmptier() {
        java.lang.Object ref = deprecatedPmptier_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            deprecatedPmptier_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * Temporary field to allow for transition period moving from string to int
       * </pre>
       *
       * <code>optional string deprecated_pmptier = 10;</code>
       * @return The bytes for deprecatedPmptier.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getDeprecatedPmptierBytes() {
        java.lang.Object ref = deprecatedPmptier_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deprecatedPmptier_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int AQID_FIELD_NUMBER = 11;
      private volatile java.lang.Object aqid_;
      /**
       * <pre>
       * RTB ad quality ID.
       * </pre>
       *
       * <code>optional string aqid = 11;</code>
       * @return Whether the aqid field is set.
       */
      @java.lang.Override
      public boolean hasAqid() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * RTB ad quality ID.
       * </pre>
       *
       * <code>optional string aqid = 11;</code>
       * @return The aqid.
       */
      @java.lang.Override
      public java.lang.String getAqid() {
        java.lang.Object ref = aqid_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            aqid_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * RTB ad quality ID.
       * </pre>
       *
       * <code>optional string aqid = 11;</code>
       * @return The bytes for aqid.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAqidBytes() {
        java.lang.Object ref = aqid_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          aqid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int AINDID_FIELD_NUMBER = 12;
      private com.google.protobuf.Internal.IntList aindid_;
      /**
       * <pre>
       * Advertiser industry ID.
       * </pre>
       *
       * <code>repeated int32 aindid = 12;</code>
       * @return A list containing the aindid.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getAindidList() {
        return aindid_;
      }
      /**
       * <pre>
       * Advertiser industry ID.
       * </pre>
       *
       * <code>repeated int32 aindid = 12;</code>
       * @return The count of aindid.
       */
      public int getAindidCount() {
        return aindid_.size();
      }
      /**
       * <pre>
       * Advertiser industry ID.
       * </pre>
       *
       * <code>repeated int32 aindid = 12;</code>
       * @param index The index of the element to return.
       * @return The aindid at the given index.
       */
      public int getAindid(int index) {
        return aindid_.getInt(index);
      }

      public static final int BURL_FIELD_NUMBER = 13;
      private volatile java.lang.Object burl_;
      /**
       * <pre>
       * URL to be called to signal the billable event.
       * </pre>
       *
       * <code>optional string burl = 13;</code>
       * @return Whether the burl field is set.
       */
      @java.lang.Override
      public boolean hasBurl() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * URL to be called to signal the billable event.
       * </pre>
       *
       * <code>optional string burl = 13;</code>
       * @return The burl.
       */
      @java.lang.Override
      public java.lang.String getBurl() {
        java.lang.Object ref = burl_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            burl_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * URL to be called to signal the billable event.
       * </pre>
       *
       * <code>optional string burl = 13;</code>
       * @return The bytes for burl.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getBurlBytes() {
        java.lang.Object ref = burl_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          burl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int IMPTRACKERS_FIELD_NUMBER = 14;
      private com.google.protobuf.LazyStringList imptrackers_;
      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @return A list containing the imptrackers.
       */
      public com.google.protobuf.ProtocolStringList
          getImptrackersList() {
        return imptrackers_;
      }
      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @return The count of imptrackers.
       */
      public int getImptrackersCount() {
        return imptrackers_.size();
      }
      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @param index The index of the element to return.
       * @return The imptrackers at the given index.
       */
      public java.lang.String getImptrackers(int index) {
        return imptrackers_.get(index);
      }
      /**
       * <pre>
       * DSP provided impression tracking pixels. If the request indicates a
       * secure environment via the imp.secure flag, all URLs must be secure.
       * </pre>
       *
       * <code>repeated string imptrackers = 14;</code>
       * @param index The index of the value to return.
       * @return The bytes of the imptrackers at the given index.
       */
      public com.google.protobuf.ByteString
          getImptrackersBytes(int index) {
        return imptrackers_.getByteString(index);
      }

      public static final int PMPTIER_FIELD_NUMBER = 15;
      private int pmptier_;
      /**
       * <pre>
       * New field for pmptier to allow for type int
       * Indicates the private marketplace (PMP) tier of the bid, where 1 and
       * 2 are reserved for future use, 3 = Private marketplace, 4 = First
       * Right marketplace. Omitted for open auction.
       * </pre>
       *
       * <code>optional int32 pmptier = 15;</code>
       * @return Whether the pmptier field is set.
       */
      @java.lang.Override
      public boolean hasPmptier() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * New field for pmptier to allow for type int
       * Indicates the private marketplace (PMP) tier of the bid, where 1 and
       * 2 are reserved for future use, 3 = Private marketplace, 4 = First
       * Right marketplace. Omitted for open auction.
       * </pre>
       *
       * <code>optional int32 pmptier = 15;</code>
       * @return The pmptier.
       */
      @java.lang.Override
      public int getPmptier() {
        return pmptier_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, advid_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, mime_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, adtype_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeUInt32(4, sizeId_);
        }
        for (int i = 0; i < targeting_.size(); i++) {
          output.writeMessage(5, targeting_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeUInt32(6, creativeapi_);
        }
        for (int i = 0; i < viewabilityvendors_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 7, viewabilityvendors_.getRaw(i));
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeInt32(8, estimated_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          output.writeDouble(9, adjustbid_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 10, deprecatedPmptier_);
        }
        if (((bitField0_ & 0x00000100) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 11, aqid_);
        }
        for (int i = 0; i < aindid_.size(); i++) {
          output.writeInt32(12, aindid_.getInt(i));
        }
        if (((bitField0_ & 0x00000200) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 13, burl_);
        }
        for (int i = 0; i < imptrackers_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 14, imptrackers_.getRaw(i));
        }
        if (((bitField0_ & 0x00000400) != 0)) {
          output.writeInt32(15, pmptier_);
        }
        unknownFields.writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, advid_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, mime_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, adtype_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, sizeId_);
        }
        for (int i = 0; i < targeting_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, targeting_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, creativeapi_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < viewabilityvendors_.size(); i++) {
            dataSize += computeStringSizeNoTag(viewabilityvendors_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getViewabilityvendorsList().size();
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(8, estimated_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(9, adjustbid_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, deprecatedPmptier_);
        }
        if (((bitField0_ & 0x00000100) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, aqid_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < aindid_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(aindid_.getInt(i));
          }
          size += dataSize;
          size += 1 * getAindidList().size();
        }
        if (((bitField0_ & 0x00000200) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, burl_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < imptrackers_.size(); i++) {
            dataSize += computeStringSizeNoTag(imptrackers_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getImptrackersList().size();
        }
        if (((bitField0_ & 0x00000400) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(15, pmptier_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp)) {
          return super.equals(obj);
        }
        com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp other = (com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp) obj;

        if (hasAdvid() != other.hasAdvid()) return false;
        if (hasAdvid()) {
          if (getAdvid()
              != other.getAdvid()) return false;
        }
        if (hasMime() != other.hasMime()) return false;
        if (hasMime()) {
          if (!getMime()
              .equals(other.getMime())) return false;
        }
        if (hasAdtype() != other.hasAdtype()) return false;
        if (hasAdtype()) {
          if (!getAdtype()
              .equals(other.getAdtype())) return false;
        }
        if (hasSizeId() != other.hasSizeId()) return false;
        if (hasSizeId()) {
          if (getSizeId()
              != other.getSizeId()) return false;
        }
        if (!getTargetingList()
            .equals(other.getTargetingList())) return false;
        if (hasCreativeapi() != other.hasCreativeapi()) return false;
        if (hasCreativeapi()) {
          if (getCreativeapi()
              != other.getCreativeapi()) return false;
        }
        if (!getViewabilityvendorsList()
            .equals(other.getViewabilityvendorsList())) return false;
        if (hasEstimated() != other.hasEstimated()) return false;
        if (hasEstimated()) {
          if (getEstimated()
              != other.getEstimated()) return false;
        }
        if (hasAdjustbid() != other.hasAdjustbid()) return false;
        if (hasAdjustbid()) {
          if (java.lang.Double.doubleToLongBits(getAdjustbid())
              != java.lang.Double.doubleToLongBits(
                  other.getAdjustbid())) return false;
        }
        if (hasDeprecatedPmptier() != other.hasDeprecatedPmptier()) return false;
        if (hasDeprecatedPmptier()) {
          if (!getDeprecatedPmptier()
              .equals(other.getDeprecatedPmptier())) return false;
        }
        if (hasAqid() != other.hasAqid()) return false;
        if (hasAqid()) {
          if (!getAqid()
              .equals(other.getAqid())) return false;
        }
        if (!getAindidList()
            .equals(other.getAindidList())) return false;
        if (hasBurl() != other.hasBurl()) return false;
        if (hasBurl()) {
          if (!getBurl()
              .equals(other.getBurl())) return false;
        }
        if (!getImptrackersList()
            .equals(other.getImptrackersList())) return false;
        if (hasPmptier() != other.hasPmptier()) return false;
        if (hasPmptier()) {
          if (getPmptier()
              != other.getPmptier()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasAdvid()) {
          hash = (37 * hash) + ADVID_FIELD_NUMBER;
          hash = (53 * hash) + getAdvid();
        }
        if (hasMime()) {
          hash = (37 * hash) + MIME_FIELD_NUMBER;
          hash = (53 * hash) + getMime().hashCode();
        }
        if (hasAdtype()) {
          hash = (37 * hash) + ADTYPE_FIELD_NUMBER;
          hash = (53 * hash) + getAdtype().hashCode();
        }
        if (hasSizeId()) {
          hash = (37 * hash) + SIZE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getSizeId();
        }
        if (getTargetingCount() > 0) {
          hash = (37 * hash) + TARGETING_FIELD_NUMBER;
          hash = (53 * hash) + getTargetingList().hashCode();
        }
        if (hasCreativeapi()) {
          hash = (37 * hash) + CREATIVEAPI_FIELD_NUMBER;
          hash = (53 * hash) + getCreativeapi();
        }
        if (getViewabilityvendorsCount() > 0) {
          hash = (37 * hash) + VIEWABILITYVENDORS_FIELD_NUMBER;
          hash = (53 * hash) + getViewabilityvendorsList().hashCode();
        }
        if (hasEstimated()) {
          hash = (37 * hash) + ESTIMATED_FIELD_NUMBER;
          hash = (53 * hash) + getEstimated();
        }
        if (hasAdjustbid()) {
          hash = (37 * hash) + ADJUSTBID_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getAdjustbid()));
        }
        if (hasDeprecatedPmptier()) {
          hash = (37 * hash) + DEPRECATED_PMPTIER_FIELD_NUMBER;
          hash = (53 * hash) + getDeprecatedPmptier().hashCode();
        }
        if (hasAqid()) {
          hash = (37 * hash) + AQID_FIELD_NUMBER;
          hash = (53 * hash) + getAqid().hashCode();
        }
        if (getAindidCount() > 0) {
          hash = (37 * hash) + AINDID_FIELD_NUMBER;
          hash = (53 * hash) + getAindidList().hashCode();
        }
        if (hasBurl()) {
          hash = (37 * hash) + BURL_FIELD_NUMBER;
          hash = (53 * hash) + getBurl().hashCode();
        }
        if (getImptrackersCount() > 0) {
          hash = (37 * hash) + IMPTRACKERS_FIELD_NUMBER;
          hash = (53 * hash) + getImptrackersList().hashCode();
        }
        if (hasPmptier()) {
          hash = (37 * hash) + PMPTIER_FIELD_NUMBER;
          hash = (53 * hash) + getPmptier();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.magnite.openrtb.v2.BidExt.Rp}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BidExt.Rp)
          com.magnite.openrtb.v2.OpenRtbXapi.BidExt.RpOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_Rp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_Rp_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.class, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder.class);
        }

        // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getTargetingFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          advid_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          mime_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          adtype_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          sizeId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          if (targetingBuilder_ == null) {
            targeting_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            targetingBuilder_.clear();
          }
          creativeapi_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000040);
          estimated_ = 0;
          bitField0_ = (bitField0_ & ~0x00000080);
          adjustbid_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000100);
          deprecatedPmptier_ = "";
          bitField0_ = (bitField0_ & ~0x00000200);
          aqid_ = "";
          bitField0_ = (bitField0_ & ~0x00000400);
          aindid_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000800);
          burl_ = "";
          bitField0_ = (bitField0_ & ~0x00001000);
          imptrackers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00002000);
          pmptier_ = 0;
          bitField0_ = (bitField0_ & ~0x00004000);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_Rp_descriptor;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp getDefaultInstanceForType() {
          return com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.getDefaultInstance();
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp build() {
          com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp buildPartial() {
          com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp result = new com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.advid_ = advid_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.mime_ = mime_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.adtype_ = adtype_;
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.sizeId_ = sizeId_;
            to_bitField0_ |= 0x00000008;
          }
          if (targetingBuilder_ == null) {
            if (((bitField0_ & 0x00000010) != 0)) {
              targeting_ = java.util.Collections.unmodifiableList(targeting_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.targeting_ = targeting_;
          } else {
            result.targeting_ = targetingBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.creativeapi_ = creativeapi_;
            to_bitField0_ |= 0x00000010;
          }
          if (((bitField0_ & 0x00000040) != 0)) {
            viewabilityvendors_ = viewabilityvendors_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.viewabilityvendors_ = viewabilityvendors_;
          if (((from_bitField0_ & 0x00000080) != 0)) {
            result.estimated_ = estimated_;
            to_bitField0_ |= 0x00000020;
          }
          if (((from_bitField0_ & 0x00000100) != 0)) {
            result.adjustbid_ = adjustbid_;
            to_bitField0_ |= 0x00000040;
          }
          if (((from_bitField0_ & 0x00000200) != 0)) {
            to_bitField0_ |= 0x00000080;
          }
          result.deprecatedPmptier_ = deprecatedPmptier_;
          if (((from_bitField0_ & 0x00000400) != 0)) {
            to_bitField0_ |= 0x00000100;
          }
          result.aqid_ = aqid_;
          if (((bitField0_ & 0x00000800) != 0)) {
            aindid_.makeImmutable();
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.aindid_ = aindid_;
          if (((from_bitField0_ & 0x00001000) != 0)) {
            to_bitField0_ |= 0x00000200;
          }
          result.burl_ = burl_;
          if (((bitField0_ & 0x00002000) != 0)) {
            imptrackers_ = imptrackers_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.imptrackers_ = imptrackers_;
          if (((from_bitField0_ & 0x00004000) != 0)) {
            result.pmptier_ = pmptier_;
            to_bitField0_ |= 0x00000400;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp) {
            return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp other) {
          if (other == com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.getDefaultInstance()) return this;
          if (other.hasAdvid()) {
            setAdvid(other.getAdvid());
          }
          if (other.hasMime()) {
            bitField0_ |= 0x00000002;
            mime_ = other.mime_;
            onChanged();
          }
          if (other.hasAdtype()) {
            bitField0_ |= 0x00000004;
            adtype_ = other.adtype_;
            onChanged();
          }
          if (other.hasSizeId()) {
            setSizeId(other.getSizeId());
          }
          if (targetingBuilder_ == null) {
            if (!other.targeting_.isEmpty()) {
              if (targeting_.isEmpty()) {
                targeting_ = other.targeting_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureTargetingIsMutable();
                targeting_.addAll(other.targeting_);
              }
              onChanged();
            }
          } else {
            if (!other.targeting_.isEmpty()) {
              if (targetingBuilder_.isEmpty()) {
                targetingBuilder_.dispose();
                targetingBuilder_ = null;
                targeting_ = other.targeting_;
                bitField0_ = (bitField0_ & ~0x00000010);
                targetingBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getTargetingFieldBuilder() : null;
              } else {
                targetingBuilder_.addAllMessages(other.targeting_);
              }
            }
          }
          if (other.hasCreativeapi()) {
            setCreativeapi(other.getCreativeapi());
          }
          if (!other.viewabilityvendors_.isEmpty()) {
            if (viewabilityvendors_.isEmpty()) {
              viewabilityvendors_ = other.viewabilityvendors_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureViewabilityvendorsIsMutable();
              viewabilityvendors_.addAll(other.viewabilityvendors_);
            }
            onChanged();
          }
          if (other.hasEstimated()) {
            setEstimated(other.getEstimated());
          }
          if (other.hasAdjustbid()) {
            setAdjustbid(other.getAdjustbid());
          }
          if (other.hasDeprecatedPmptier()) {
            bitField0_ |= 0x00000200;
            deprecatedPmptier_ = other.deprecatedPmptier_;
            onChanged();
          }
          if (other.hasAqid()) {
            bitField0_ |= 0x00000400;
            aqid_ = other.aqid_;
            onChanged();
          }
          if (!other.aindid_.isEmpty()) {
            if (aindid_.isEmpty()) {
              aindid_ = other.aindid_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureAindidIsMutable();
              aindid_.addAll(other.aindid_);
            }
            onChanged();
          }
          if (other.hasBurl()) {
            bitField0_ |= 0x00001000;
            burl_ = other.burl_;
            onChanged();
          }
          if (!other.imptrackers_.isEmpty()) {
            if (imptrackers_.isEmpty()) {
              imptrackers_ = other.imptrackers_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureImptrackersIsMutable();
              imptrackers_.addAll(other.imptrackers_);
            }
            onChanged();
          }
          if (other.hasPmptier()) {
            setPmptier(other.getPmptier());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int advid_ ;
        /**
         * <pre>
         * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
         * </pre>
         *
         * <code>optional int32 advid = 1;</code>
         * @return Whether the advid field is set.
         */
        @java.lang.Override
        public boolean hasAdvid() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
         * </pre>
         *
         * <code>optional int32 advid = 1;</code>
         * @return The advid.
         */
        @java.lang.Override
        public int getAdvid() {
          return advid_;
        }
        /**
         * <pre>
         * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
         * </pre>
         *
         * <code>optional int32 advid = 1;</code>
         * @param value The advid to set.
         * @return This builder for chaining.
         */
        public Builder setAdvid(int value) {
          bitField0_ |= 0x00000001;
          advid_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ advertiser ID for the bid, corresponding to the "adomain" field.
         * </pre>
         *
         * <code>optional int32 advid = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearAdvid() {
          bitField0_ = (bitField0_ & ~0x00000001);
          advid_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object mime_ = "";
        /**
         * <pre>
         * The MIME content type with which the "adm" property of the bid is
         * encoded for Banner objects only.
         * </pre>
         *
         * <code>optional string mime = 2;</code>
         * @return Whether the mime field is set.
         */
        public boolean hasMime() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * The MIME content type with which the "adm" property of the bid is
         * encoded for Banner objects only.
         * </pre>
         *
         * <code>optional string mime = 2;</code>
         * @return The mime.
         */
        public java.lang.String getMime() {
          java.lang.Object ref = mime_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              mime_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The MIME content type with which the "adm" property of the bid is
         * encoded for Banner objects only.
         * </pre>
         *
         * <code>optional string mime = 2;</code>
         * @return The bytes for mime.
         */
        public com.google.protobuf.ByteString
            getMimeBytes() {
          java.lang.Object ref = mime_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            mime_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The MIME content type with which the "adm" property of the bid is
         * encoded for Banner objects only.
         * </pre>
         *
         * <code>optional string mime = 2;</code>
         * @param value The mime to set.
         * @return This builder for chaining.
         */
        public Builder setMime(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          mime_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The MIME content type with which the "adm" property of the bid is
         * encoded for Banner objects only.
         * </pre>
         *
         * <code>optional string mime = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearMime() {
          bitField0_ = (bitField0_ & ~0x00000002);
          mime_ = getDefaultInstance().getMime();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The MIME content type with which the "adm" property of the bid is
         * encoded for Banner objects only.
         * </pre>
         *
         * <code>optional string mime = 2;</code>
         * @param value The bytes for mime to set.
         * @return This builder for chaining.
         */
        public Builder setMimeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          mime_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object adtype_ = "";
        /**
         * <pre>
         * The type of creative returned. This can be one of banner or video.
         * For banner and video, the creative is sent as part of adm.
         * </pre>
         *
         * <code>optional string adtype = 3;</code>
         * @return Whether the adtype field is set.
         */
        public boolean hasAdtype() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * The type of creative returned. This can be one of banner or video.
         * For banner and video, the creative is sent as part of adm.
         * </pre>
         *
         * <code>optional string adtype = 3;</code>
         * @return The adtype.
         */
        public java.lang.String getAdtype() {
          java.lang.Object ref = adtype_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              adtype_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The type of creative returned. This can be one of banner or video.
         * For banner and video, the creative is sent as part of adm.
         * </pre>
         *
         * <code>optional string adtype = 3;</code>
         * @return The bytes for adtype.
         */
        public com.google.protobuf.ByteString
            getAdtypeBytes() {
          java.lang.Object ref = adtype_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            adtype_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The type of creative returned. This can be one of banner or video.
         * For banner and video, the creative is sent as part of adm.
         * </pre>
         *
         * <code>optional string adtype = 3;</code>
         * @param value The adtype to set.
         * @return This builder for chaining.
         */
        public Builder setAdtype(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          adtype_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The type of creative returned. This can be one of banner or video.
         * For banner and video, the creative is sent as part of adm.
         * </pre>
         *
         * <code>optional string adtype = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearAdtype() {
          bitField0_ = (bitField0_ & ~0x00000004);
          adtype_ = getDefaultInstance().getAdtype();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The type of creative returned. This can be one of banner or video.
         * For banner and video, the creative is sent as part of adm.
         * </pre>
         *
         * <code>optional string adtype = 3;</code>
         * @param value The bytes for adtype to set.
         * @return This builder for chaining.
         */
        public Builder setAdtypeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          adtype_ = value;
          onChanged();
          return this;
        }

        private int sizeId_ ;
        /**
         * <pre>
         * DV+ size ID of winning ad size. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 4;</code>
         * @return Whether the sizeId field is set.
         */
        @java.lang.Override
        public boolean hasSizeId() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         * DV+ size ID of winning ad size. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 4;</code>
         * @return The sizeId.
         */
        @java.lang.Override
        public int getSizeId() {
          return sizeId_;
        }
        /**
         * <pre>
         * DV+ size ID of winning ad size. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 4;</code>
         * @param value The sizeId to set.
         * @return This builder for chaining.
         */
        public Builder setSizeId(int value) {
          bitField0_ |= 0x00000008;
          sizeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DV+ size ID of winning ad size. Refer to
         * https://resources.rubiconproject.com/resource/publisher-resources-2/supported-ad-formats.
         * </pre>
         *
         * <code>optional uint32 size_id = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearSizeId() {
          bitField0_ = (bitField0_ & ~0x00000008);
          sizeId_ = 0;
          onChanged();
          return this;
        }

        private java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> targeting_ =
          java.util.Collections.emptyList();
        private void ensureTargetingIsMutable() {
          if (!((bitField0_ & 0x00000010) != 0)) {
            targeting_ = new java.util.ArrayList<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair>(targeting_);
            bitField0_ |= 0x00000010;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> targetingBuilder_;

        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> getTargetingList() {
          if (targetingBuilder_ == null) {
            return java.util.Collections.unmodifiableList(targeting_);
          } else {
            return targetingBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public int getTargetingCount() {
          if (targetingBuilder_ == null) {
            return targeting_.size();
          } else {
            return targetingBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair getTargeting(int index) {
          if (targetingBuilder_ == null) {
            return targeting_.get(index);
          } else {
            return targetingBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder setTargeting(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetingBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetingIsMutable();
            targeting_.set(index, value);
            onChanged();
          } else {
            targetingBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder setTargeting(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetingBuilder_ == null) {
            ensureTargetingIsMutable();
            targeting_.set(index, builderForValue.build());
            onChanged();
          } else {
            targetingBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder addTargeting(com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetingBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetingIsMutable();
            targeting_.add(value);
            onChanged();
          } else {
            targetingBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder addTargeting(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair value) {
          if (targetingBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetingIsMutable();
            targeting_.add(index, value);
            onChanged();
          } else {
            targetingBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder addTargeting(
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetingBuilder_ == null) {
            ensureTargetingIsMutable();
            targeting_.add(builderForValue.build());
            onChanged();
          } else {
            targetingBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder addTargeting(
            int index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder builderForValue) {
          if (targetingBuilder_ == null) {
            ensureTargetingIsMutable();
            targeting_.add(index, builderForValue.build());
            onChanged();
          } else {
            targetingBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder addAllTargeting(
            java.lang.Iterable<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair> values) {
          if (targetingBuilder_ == null) {
            ensureTargetingIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, targeting_);
            onChanged();
          } else {
            targetingBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder clearTargeting() {
          if (targetingBuilder_ == null) {
            targeting_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            targetingBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public Builder removeTargeting(int index) {
          if (targetingBuilder_ == null) {
            ensureTargetingIsMutable();
            targeting_.remove(index);
            onChanged();
          } else {
            targetingBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder getTargetingBuilder(
            int index) {
          return getTargetingFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder getTargetingOrBuilder(
            int index) {
          if (targetingBuilder_ == null) {
            return targeting_.get(index);  } else {
            return targetingBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public java.util.List<? extends com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
             getTargetingOrBuilderList() {
          if (targetingBuilder_ != null) {
            return targetingBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(targeting_);
          }
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTargetingBuilder() {
          return getTargetingFieldBuilder().addBuilder(
              com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder addTargetingBuilder(
            int index) {
          return getTargetingFieldBuilder().addBuilder(
              index, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.getDefaultInstance());
        }
        /**
         * <pre>
         * Custom key/values used for targeting line items in a publisher ad
         * server.
         * </pre>
         *
         * <code>repeated .com.magnite.openrtb.v2.KeyValuePair targeting = 5;</code>
         */
        public java.util.List<com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder> 
             getTargetingBuilderList() {
          return getTargetingFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder> 
            getTargetingFieldBuilder() {
          if (targetingBuilder_ == null) {
            targetingBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePair.Builder, com.magnite.openrtb.v2.OpenRtbXapi.KeyValuePairOrBuilder>(
                    targeting_,
                    ((bitField0_ & 0x00000010) != 0),
                    getParentForChildren(),
                    isClean());
            targeting_ = null;
          }
          return targetingBuilder_;
        }

        private int creativeapi_ ;
        /**
         * <pre>
         * Supported API framework for this impression. Refer to the IAB
         * OpenRTB ApiFramework enum.
         * </pre>
         *
         * <code>optional uint32 creativeapi = 6;</code>
         * @return Whether the creativeapi field is set.
         */
        @java.lang.Override
        public boolean hasCreativeapi() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <pre>
         * Supported API framework for this impression. Refer to the IAB
         * OpenRTB ApiFramework enum.
         * </pre>
         *
         * <code>optional uint32 creativeapi = 6;</code>
         * @return The creativeapi.
         */
        @java.lang.Override
        public int getCreativeapi() {
          return creativeapi_;
        }
        /**
         * <pre>
         * Supported API framework for this impression. Refer to the IAB
         * OpenRTB ApiFramework enum.
         * </pre>
         *
         * <code>optional uint32 creativeapi = 6;</code>
         * @param value The creativeapi to set.
         * @return This builder for chaining.
         */
        public Builder setCreativeapi(int value) {
          bitField0_ |= 0x00000020;
          creativeapi_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Supported API framework for this impression. Refer to the IAB
         * OpenRTB ApiFramework enum.
         * </pre>
         *
         * <code>optional uint32 creativeapi = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearCreativeapi() {
          bitField0_ = (bitField0_ & ~0x00000020);
          creativeapi_ = 0;
          onChanged();
          return this;
        }

        private com.google.protobuf.LazyStringList viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureViewabilityvendorsIsMutable() {
          if (!((bitField0_ & 0x00000040) != 0)) {
            viewabilityvendors_ = new com.google.protobuf.LazyStringArrayList(viewabilityvendors_);
            bitField0_ |= 0x00000040;
           }
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @return A list containing the viewabilityvendors.
         */
        public com.google.protobuf.ProtocolStringList
            getViewabilityvendorsList() {
          return viewabilityvendors_.getUnmodifiableView();
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @return The count of viewabilityvendors.
         */
        public int getViewabilityvendorsCount() {
          return viewabilityvendors_.size();
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @param index The index of the element to return.
         * @return The viewabilityvendors at the given index.
         */
        public java.lang.String getViewabilityvendors(int index) {
          return viewabilityvendors_.get(index);
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @param index The index of the value to return.
         * @return The bytes of the viewabilityvendors at the given index.
         */
        public com.google.protobuf.ByteString
            getViewabilityvendorsBytes(int index) {
          return viewabilityvendors_.getByteString(index);
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @param index The index to set the value at.
         * @param value The viewabilityvendors to set.
         * @return This builder for chaining.
         */
        public Builder setViewabilityvendors(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureViewabilityvendorsIsMutable();
          viewabilityvendors_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @param value The viewabilityvendors to add.
         * @return This builder for chaining.
         */
        public Builder addViewabilityvendors(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureViewabilityvendorsIsMutable();
          viewabilityvendors_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @param values The viewabilityvendors to add.
         * @return This builder for chaining.
         */
        public Builder addAllViewabilityvendors(
            java.lang.Iterable<java.lang.String> values) {
          ensureViewabilityvendorsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, viewabilityvendors_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearViewabilityvendors() {
          viewabilityvendors_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Supported viewability vendors. For list of supported vendors, visit:
         * https://resources.rubiconproject.com/resource/publisher-resources/xapi-specifications/#4.9.
         * </pre>
         *
         * <code>repeated string viewabilityvendors = 7;</code>
         * @param value The bytes of the viewabilityvendors to add.
         * @return This builder for chaining.
         */
        public Builder addViewabilityvendorsBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureViewabilityvendorsIsMutable();
          viewabilityvendors_.add(value);
          onChanged();
          return this;
        }

        private int estimated_ ;
        /**
         * <pre>
         * Indicates if the price is estimated (e.g., where pricing is not
         * CPM-based), 0 = not estimated, 1 = estimated.
         * </pre>
         *
         * <code>optional int32 estimated = 8;</code>
         * @return Whether the estimated field is set.
         */
        @java.lang.Override
        public boolean hasEstimated() {
          return ((bitField0_ & 0x00000080) != 0);
        }
        /**
         * <pre>
         * Indicates if the price is estimated (e.g., where pricing is not
         * CPM-based), 0 = not estimated, 1 = estimated.
         * </pre>
         *
         * <code>optional int32 estimated = 8;</code>
         * @return The estimated.
         */
        @java.lang.Override
        public int getEstimated() {
          return estimated_;
        }
        /**
         * <pre>
         * Indicates if the price is estimated (e.g., where pricing is not
         * CPM-based), 0 = not estimated, 1 = estimated.
         * </pre>
         *
         * <code>optional int32 estimated = 8;</code>
         * @param value The estimated to set.
         * @return This builder for chaining.
         */
        public Builder setEstimated(int value) {
          bitField0_ |= 0x00000080;
          estimated_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Indicates if the price is estimated (e.g., where pricing is not
         * CPM-based), 0 = not estimated, 1 = estimated.
         * </pre>
         *
         * <code>optional int32 estimated = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearEstimated() {
          bitField0_ = (bitField0_ & ~0x00000080);
          estimated_ = 0;
          onChanged();
          return this;
        }

        private double adjustbid_ ;
        /**
         * <pre>
         * Bid price net of all fees.
         * </pre>
         *
         * <code>optional double adjustbid = 9;</code>
         * @return Whether the adjustbid field is set.
         */
        @java.lang.Override
        public boolean hasAdjustbid() {
          return ((bitField0_ & 0x00000100) != 0);
        }
        /**
         * <pre>
         * Bid price net of all fees.
         * </pre>
         *
         * <code>optional double adjustbid = 9;</code>
         * @return The adjustbid.
         */
        @java.lang.Override
        public double getAdjustbid() {
          return adjustbid_;
        }
        /**
         * <pre>
         * Bid price net of all fees.
         * </pre>
         *
         * <code>optional double adjustbid = 9;</code>
         * @param value The adjustbid to set.
         * @return This builder for chaining.
         */
        public Builder setAdjustbid(double value) {
          bitField0_ |= 0x00000100;
          adjustbid_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Bid price net of all fees.
         * </pre>
         *
         * <code>optional double adjustbid = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearAdjustbid() {
          bitField0_ = (bitField0_ & ~0x00000100);
          adjustbid_ = 0D;
          onChanged();
          return this;
        }

        private java.lang.Object deprecatedPmptier_ = "";
        /**
         * <pre>
         * Temporary field to allow for transition period moving from string to int
         * </pre>
         *
         * <code>optional string deprecated_pmptier = 10;</code>
         * @return Whether the deprecatedPmptier field is set.
         */
        public boolean hasDeprecatedPmptier() {
          return ((bitField0_ & 0x00000200) != 0);
        }
        /**
         * <pre>
         * Temporary field to allow for transition period moving from string to int
         * </pre>
         *
         * <code>optional string deprecated_pmptier = 10;</code>
         * @return The deprecatedPmptier.
         */
        public java.lang.String getDeprecatedPmptier() {
          java.lang.Object ref = deprecatedPmptier_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              deprecatedPmptier_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Temporary field to allow for transition period moving from string to int
         * </pre>
         *
         * <code>optional string deprecated_pmptier = 10;</code>
         * @return The bytes for deprecatedPmptier.
         */
        public com.google.protobuf.ByteString
            getDeprecatedPmptierBytes() {
          java.lang.Object ref = deprecatedPmptier_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            deprecatedPmptier_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Temporary field to allow for transition period moving from string to int
         * </pre>
         *
         * <code>optional string deprecated_pmptier = 10;</code>
         * @param value The deprecatedPmptier to set.
         * @return This builder for chaining.
         */
        public Builder setDeprecatedPmptier(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
          deprecatedPmptier_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Temporary field to allow for transition period moving from string to int
         * </pre>
         *
         * <code>optional string deprecated_pmptier = 10;</code>
         * @return This builder for chaining.
         */
        public Builder clearDeprecatedPmptier() {
          bitField0_ = (bitField0_ & ~0x00000200);
          deprecatedPmptier_ = getDefaultInstance().getDeprecatedPmptier();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Temporary field to allow for transition period moving from string to int
         * </pre>
         *
         * <code>optional string deprecated_pmptier = 10;</code>
         * @param value The bytes for deprecatedPmptier to set.
         * @return This builder for chaining.
         */
        public Builder setDeprecatedPmptierBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
          deprecatedPmptier_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object aqid_ = "";
        /**
         * <pre>
         * RTB ad quality ID.
         * </pre>
         *
         * <code>optional string aqid = 11;</code>
         * @return Whether the aqid field is set.
         */
        public boolean hasAqid() {
          return ((bitField0_ & 0x00000400) != 0);
        }
        /**
         * <pre>
         * RTB ad quality ID.
         * </pre>
         *
         * <code>optional string aqid = 11;</code>
         * @return The aqid.
         */
        public java.lang.String getAqid() {
          java.lang.Object ref = aqid_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              aqid_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * RTB ad quality ID.
         * </pre>
         *
         * <code>optional string aqid = 11;</code>
         * @return The bytes for aqid.
         */
        public com.google.protobuf.ByteString
            getAqidBytes() {
          java.lang.Object ref = aqid_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            aqid_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * RTB ad quality ID.
         * </pre>
         *
         * <code>optional string aqid = 11;</code>
         * @param value The aqid to set.
         * @return This builder for chaining.
         */
        public Builder setAqid(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
          aqid_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * RTB ad quality ID.
         * </pre>
         *
         * <code>optional string aqid = 11;</code>
         * @return This builder for chaining.
         */
        public Builder clearAqid() {
          bitField0_ = (bitField0_ & ~0x00000400);
          aqid_ = getDefaultInstance().getAqid();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * RTB ad quality ID.
         * </pre>
         *
         * <code>optional string aqid = 11;</code>
         * @param value The bytes for aqid to set.
         * @return This builder for chaining.
         */
        public Builder setAqidBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
          aqid_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.Internal.IntList aindid_ = emptyIntList();
        private void ensureAindidIsMutable() {
          if (!((bitField0_ & 0x00000800) != 0)) {
            aindid_ = mutableCopy(aindid_);
            bitField0_ |= 0x00000800;
           }
        }
        /**
         * <pre>
         * Advertiser industry ID.
         * </pre>
         *
         * <code>repeated int32 aindid = 12;</code>
         * @return A list containing the aindid.
         */
        public java.util.List<java.lang.Integer>
            getAindidList() {
          return ((bitField0_ & 0x00000800) != 0) ?
                   java.util.Collections.unmodifiableList(aindid_) : aindid_;
        }
        /**
         * <pre>
         * Advertiser industry ID.
         * </pre>
         *
         * <code>repeated int32 aindid = 12;</code>
         * @return The count of aindid.
         */
        public int getAindidCount() {
          return aindid_.size();
        }
        /**
         * <pre>
         * Advertiser industry ID.
         * </pre>
         *
         * <code>repeated int32 aindid = 12;</code>
         * @param index The index of the element to return.
         * @return The aindid at the given index.
         */
        public int getAindid(int index) {
          return aindid_.getInt(index);
        }
        /**
         * <pre>
         * Advertiser industry ID.
         * </pre>
         *
         * <code>repeated int32 aindid = 12;</code>
         * @param index The index to set the value at.
         * @param value The aindid to set.
         * @return This builder for chaining.
         */
        public Builder setAindid(
            int index, int value) {
          ensureAindidIsMutable();
          aindid_.setInt(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Advertiser industry ID.
         * </pre>
         *
         * <code>repeated int32 aindid = 12;</code>
         * @param value The aindid to add.
         * @return This builder for chaining.
         */
        public Builder addAindid(int value) {
          ensureAindidIsMutable();
          aindid_.addInt(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Advertiser industry ID.
         * </pre>
         *
         * <code>repeated int32 aindid = 12;</code>
         * @param values The aindid to add.
         * @return This builder for chaining.
         */
        public Builder addAllAindid(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureAindidIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, aindid_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Advertiser industry ID.
         * </pre>
         *
         * <code>repeated int32 aindid = 12;</code>
         * @return This builder for chaining.
         */
        public Builder clearAindid() {
          aindid_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
          return this;
        }

        private java.lang.Object burl_ = "";
        /**
         * <pre>
         * URL to be called to signal the billable event.
         * </pre>
         *
         * <code>optional string burl = 13;</code>
         * @return Whether the burl field is set.
         */
        public boolean hasBurl() {
          return ((bitField0_ & 0x00001000) != 0);
        }
        /**
         * <pre>
         * URL to be called to signal the billable event.
         * </pre>
         *
         * <code>optional string burl = 13;</code>
         * @return The burl.
         */
        public java.lang.String getBurl() {
          java.lang.Object ref = burl_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              burl_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * URL to be called to signal the billable event.
         * </pre>
         *
         * <code>optional string burl = 13;</code>
         * @return The bytes for burl.
         */
        public com.google.protobuf.ByteString
            getBurlBytes() {
          java.lang.Object ref = burl_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            burl_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * URL to be called to signal the billable event.
         * </pre>
         *
         * <code>optional string burl = 13;</code>
         * @param value The burl to set.
         * @return This builder for chaining.
         */
        public Builder setBurl(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00001000;
          burl_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * URL to be called to signal the billable event.
         * </pre>
         *
         * <code>optional string burl = 13;</code>
         * @return This builder for chaining.
         */
        public Builder clearBurl() {
          bitField0_ = (bitField0_ & ~0x00001000);
          burl_ = getDefaultInstance().getBurl();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * URL to be called to signal the billable event.
         * </pre>
         *
         * <code>optional string burl = 13;</code>
         * @param value The bytes for burl to set.
         * @return This builder for chaining.
         */
        public Builder setBurlBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00001000;
          burl_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.LazyStringList imptrackers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureImptrackersIsMutable() {
          if (!((bitField0_ & 0x00002000) != 0)) {
            imptrackers_ = new com.google.protobuf.LazyStringArrayList(imptrackers_);
            bitField0_ |= 0x00002000;
           }
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @return A list containing the imptrackers.
         */
        public com.google.protobuf.ProtocolStringList
            getImptrackersList() {
          return imptrackers_.getUnmodifiableView();
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @return The count of imptrackers.
         */
        public int getImptrackersCount() {
          return imptrackers_.size();
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @param index The index of the element to return.
         * @return The imptrackers at the given index.
         */
        public java.lang.String getImptrackers(int index) {
          return imptrackers_.get(index);
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @param index The index of the value to return.
         * @return The bytes of the imptrackers at the given index.
         */
        public com.google.protobuf.ByteString
            getImptrackersBytes(int index) {
          return imptrackers_.getByteString(index);
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @param index The index to set the value at.
         * @param value The imptrackers to set.
         * @return This builder for chaining.
         */
        public Builder setImptrackers(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureImptrackersIsMutable();
          imptrackers_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @param value The imptrackers to add.
         * @return This builder for chaining.
         */
        public Builder addImptrackers(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureImptrackersIsMutable();
          imptrackers_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @param values The imptrackers to add.
         * @return This builder for chaining.
         */
        public Builder addAllImptrackers(
            java.lang.Iterable<java.lang.String> values) {
          ensureImptrackersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, imptrackers_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @return This builder for chaining.
         */
        public Builder clearImptrackers() {
          imptrackers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DSP provided impression tracking pixels. If the request indicates a
         * secure environment via the imp.secure flag, all URLs must be secure.
         * </pre>
         *
         * <code>repeated string imptrackers = 14;</code>
         * @param value The bytes of the imptrackers to add.
         * @return This builder for chaining.
         */
        public Builder addImptrackersBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureImptrackersIsMutable();
          imptrackers_.add(value);
          onChanged();
          return this;
        }

        private int pmptier_ ;
        /**
         * <pre>
         * New field for pmptier to allow for type int
         * Indicates the private marketplace (PMP) tier of the bid, where 1 and
         * 2 are reserved for future use, 3 = Private marketplace, 4 = First
         * Right marketplace. Omitted for open auction.
         * </pre>
         *
         * <code>optional int32 pmptier = 15;</code>
         * @return Whether the pmptier field is set.
         */
        @java.lang.Override
        public boolean hasPmptier() {
          return ((bitField0_ & 0x00004000) != 0);
        }
        /**
         * <pre>
         * New field for pmptier to allow for type int
         * Indicates the private marketplace (PMP) tier of the bid, where 1 and
         * 2 are reserved for future use, 3 = Private marketplace, 4 = First
         * Right marketplace. Omitted for open auction.
         * </pre>
         *
         * <code>optional int32 pmptier = 15;</code>
         * @return The pmptier.
         */
        @java.lang.Override
        public int getPmptier() {
          return pmptier_;
        }
        /**
         * <pre>
         * New field for pmptier to allow for type int
         * Indicates the private marketplace (PMP) tier of the bid, where 1 and
         * 2 are reserved for future use, 3 = Private marketplace, 4 = First
         * Right marketplace. Omitted for open auction.
         * </pre>
         *
         * <code>optional int32 pmptier = 15;</code>
         * @param value The pmptier to set.
         * @return This builder for chaining.
         */
        public Builder setPmptier(int value) {
          bitField0_ |= 0x00004000;
          pmptier_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * New field for pmptier to allow for type int
         * Indicates the private marketplace (PMP) tier of the bid, where 1 and
         * 2 are reserved for future use, 3 = Private marketplace, 4 = First
         * Right marketplace. Omitted for open auction.
         * </pre>
         *
         * <code>optional int32 pmptier = 15;</code>
         * @return This builder for chaining.
         */
        public Builder clearPmptier() {
          bitField0_ = (bitField0_ & ~0x00004000);
          pmptier_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BidExt.Rp)
      }

      // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BidExt.Rp)
      private static final com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp();
      }

      public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Rp>
          PARSER = new com.google.protobuf.AbstractParser<Rp>() {
        @java.lang.Override
        public Rp parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Rp(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<Rp> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Rp> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int RP_FIELD_NUMBER = 1;
    private com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp rp_;
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
     * @return Whether the rp field is set.
     */
    @java.lang.Override
    public boolean hasRp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
     * @return The rp.
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp getRp() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.getDefaultInstance() : rp_;
    }
    /**
     * <pre>
     * Additions specific to DV+.
     * </pre>
     *
     * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
     */
    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.RpOrBuilder getRpOrBuilder() {
      return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.getDefaultInstance() : rp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRp());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRp());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidExt)) {
        return super.equals(obj);
      }
      com.magnite.openrtb.v2.OpenRtbXapi.BidExt other = (com.magnite.openrtb.v2.OpenRtbXapi.BidExt) obj;

      if (hasRp() != other.hasRp()) return false;
      if (hasRp()) {
        if (!getRp()
            .equals(other.getRp())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRp()) {
        hash = (37 * hash) + RP_FIELD_NUMBER;
        hash = (53 * hash) + getRp().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.magnite.openrtb.v2.OpenRtbXapi.BidExt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.magnite.openrtb.v2.BidExt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.magnite.openrtb.v2.BidExt)
        com.magnite.openrtb.v2.OpenRtbXapi.BidExtOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.magnite.openrtb.v2.OpenRtbXapi.BidExt.class, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Builder.class);
      }

      // Construct using com.magnite.openrtb.v2.OpenRtbXapi.BidExt.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRpFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rpBuilder_ == null) {
          rp_ = null;
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.internal_static_com_magnite_openrtb_v2_BidExt_descriptor;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidExt getDefaultInstanceForType() {
        return com.magnite.openrtb.v2.OpenRtbXapi.BidExt.getDefaultInstance();
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidExt build() {
        com.magnite.openrtb.v2.OpenRtbXapi.BidExt result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.magnite.openrtb.v2.OpenRtbXapi.BidExt buildPartial() {
        com.magnite.openrtb.v2.OpenRtbXapi.BidExt result = new com.magnite.openrtb.v2.OpenRtbXapi.BidExt(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (rpBuilder_ == null) {
            result.rp_ = rp_;
          } else {
            result.rp_ = rpBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.magnite.openrtb.v2.OpenRtbXapi.BidExt) {
          return mergeFrom((com.magnite.openrtb.v2.OpenRtbXapi.BidExt)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.magnite.openrtb.v2.OpenRtbXapi.BidExt other) {
        if (other == com.magnite.openrtb.v2.OpenRtbXapi.BidExt.getDefaultInstance()) return this;
        if (other.hasRp()) {
          mergeRp(other.getRp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.magnite.openrtb.v2.OpenRtbXapi.BidExt parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.magnite.openrtb.v2.OpenRtbXapi.BidExt) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp rp_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.RpOrBuilder> rpBuilder_;
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       * @return Whether the rp field is set.
       */
      public boolean hasRp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       * @return The rp.
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp getRp() {
        if (rpBuilder_ == null) {
          return rp_ == null ? com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.getDefaultInstance() : rp_;
        } else {
          return rpBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       */
      public Builder setRp(com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp value) {
        if (rpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rp_ = value;
          onChanged();
        } else {
          rpBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       */
      public Builder setRp(
          com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder builderForValue) {
        if (rpBuilder_ == null) {
          rp_ = builderForValue.build();
          onChanged();
        } else {
          rpBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       */
      public Builder mergeRp(com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp value) {
        if (rpBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              rp_ != null &&
              rp_ != com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.getDefaultInstance()) {
            rp_ =
              com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.newBuilder(rp_).mergeFrom(value).buildPartial();
          } else {
            rp_ = value;
          }
          onChanged();
        } else {
          rpBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       */
      public Builder clearRp() {
        if (rpBuilder_ == null) {
          rp_ = null;
          onChanged();
        } else {
          rpBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder getRpBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRpFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       */
      public com.magnite.openrtb.v2.OpenRtbXapi.BidExt.RpOrBuilder getRpOrBuilder() {
        if (rpBuilder_ != null) {
          return rpBuilder_.getMessageOrBuilder();
        } else {
          return rp_ == null ?
              com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.getDefaultInstance() : rp_;
        }
      }
      /**
       * <pre>
       * Additions specific to DV+.
       * </pre>
       *
       * <code>optional .com.magnite.openrtb.v2.BidExt.Rp rp = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.RpOrBuilder> 
          getRpFieldBuilder() {
        if (rpBuilder_ == null) {
          rpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.Rp.Builder, com.magnite.openrtb.v2.OpenRtbXapi.BidExt.RpOrBuilder>(
                  getRp(),
                  getParentForChildren(),
                  isClean());
          rp_ = null;
        }
        return rpBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.magnite.openrtb.v2.BidExt)
    }

    // @@protoc_insertion_point(class_scope:com.magnite.openrtb.v2.BidExt)
    private static final com.magnite.openrtb.v2.OpenRtbXapi.BidExt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.magnite.openrtb.v2.OpenRtbXapi.BidExt();
    }

    public static com.magnite.openrtb.v2.OpenRtbXapi.BidExt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BidExt>
        PARSER = new com.google.protobuf.AbstractParser<BidExt>() {
      @java.lang.Override
      public BidExt parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BidExt(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BidExt> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BidExt> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.magnite.openrtb.v2.OpenRtbXapi.BidExt getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public static final int BID_REQUEST_FIELD_NUMBER = 5101;
  /**
   * <pre>
   * Extension key for xAPI BidRequest.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest,
      com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt> bidRequest = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.BidRequestExt.getDefaultInstance());
  public static final int IMP_FIELD_NUMBER = 5102;
  /**
   * <pre>
   * Extension key for xAPI BidRequest.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Imp { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Imp,
      com.magnite.openrtb.v2.OpenRtbXapi.ImpExt> imp = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.ImpExt.getDefaultInstance());
  public static final int VIDEO_FIELD_NUMBER = 5103;
  /**
   * <pre>
   * Extension key for xAPI Video.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Imp.Video { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Imp.Video,
      com.magnite.openrtb.v2.OpenRtbXapi.VideoExt> video = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.VideoExt.getDefaultInstance());
  public static final int BANNER_FIELD_NUMBER = 5104;
  /**
   * <pre>
   * Extension key for xAPI Banner.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Imp.Banner { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Imp.Banner,
      com.magnite.openrtb.v2.OpenRtbXapi.BannerExt> banner = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.BannerExt.getDefaultInstance());
  public static final int APP_FIELD_NUMBER = 5105;
  /**
   * <pre>
   * Extension key for xAPI App.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.App { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.App,
      com.magnite.openrtb.v2.OpenRtbXapi.AppExt> app = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.AppExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.AppExt.getDefaultInstance());
  public static final int SITE_FIELD_NUMBER = 5106;
  /**
   * <pre>
   * Extension key for xAPI Site.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Site { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Site,
      com.magnite.openrtb.v2.OpenRtbXapi.SiteExt> site = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.SiteExt.getDefaultInstance());
  public static final int PUBLISHER_FIELD_NUMBER = 5107;
  /**
   * <pre>
   * Extension key for xAPI Publisher.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Publisher { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Publisher,
      com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt> publisher = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.PublisherExt.getDefaultInstance());
  public static final int DEVICE_FIELD_NUMBER = 5108;
  /**
   * <pre>
   * Extension key for xAPI Device.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Device { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Device,
      com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt> device = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.DeviceExt.getDefaultInstance());
  public static final int GEO_FIELD_NUMBER = 5109;
  /**
   * <pre>
   * Extension key for xAPI Geo.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Geo { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Geo,
      com.magnite.openrtb.v2.OpenRtbXapi.GeoExt> geo = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.GeoExt.getDefaultInstance());
  public static final int USER_FIELD_NUMBER = 5110;
  /**
   * <pre>
   * Extension key for xAPI User.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.User { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.User,
      com.magnite.openrtb.v2.OpenRtbXapi.UserExt> user = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.UserExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.UserExt.getDefaultInstance());
  public static final int REGS_FIELD_NUMBER = 5111;
  /**
   * <pre>
   * Extension key for xAPI Regs.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Regs { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Regs,
      com.magnite.openrtb.v2.OpenRtbXapi.RegsExt> regs = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.RegsExt.getDefaultInstance());
  public static final int SOURCE_FIELD_NUMBER = 5112;
  /**
   * <pre>
   * Extension key for xAPI Source.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Source { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Source,
      com.magnite.openrtb.v2.OpenRtbXapi.SourceExt> source = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.SourceExt.getDefaultInstance());
  public static final int NATIVE_FIELD_NUMBER = 5113;
  /**
   * <pre>
   * Extension key for xAPI Native.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidRequest.Imp.Native { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidRequest.Imp.Native,
      com.magnite.openrtb.v2.OpenRtbXapi.NativeExt> native_ = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.NativeExt.getDefaultInstance());
  public static final int NATIVE_REQUEST_FIELD_NUMBER = 5114;
  /**
   * <pre>
   * Extension key for xAPI NativeRequest.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.NativeRequest { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.NativeRequest,
      com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt> nativeRequest = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.NativeRequestExt.getDefaultInstance());
  public static final int BID_RESPONSE_FIELD_NUMBER = 5201;
  /**
   * <pre>
   * Extension key for xAPI BidResponse.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidResponse { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidResponse,
      com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt> bidResponse = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.BidResponseExt.getDefaultInstance());
  public static final int SEATBID_FIELD_NUMBER = 5202;
  /**
   * <pre>
   * Extension key for xAPI SeatBid.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidResponse.SeatBid { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidResponse.SeatBid,
      com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt> seatbid = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.SeatBidExt.getDefaultInstance());
  public static final int BID_FIELD_NUMBER = 5203;
  /**
   * <pre>
   * Extension key for xAPI Bid.ext
   * </pre>
   *
   * <code>extend .com.iabtechlab.openrtb.v2.BidResponse.SeatBid.Bid { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.iabtechlab.openrtb.v2.OpenRtb.BidResponse.SeatBid.Bid,
      com.magnite.openrtb.v2.OpenRtbXapi.BidExt> bid = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.magnite.openrtb.v2.OpenRtbXapi.BidExt.class,
        com.magnite.openrtb.v2.OpenRtbXapi.BidExt.getDefaultInstance());
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_KeyValuePair_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_KeyValuePair_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_Window_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_Window_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BidRequestExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BidRequestExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_ImpExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_ImpExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_ImpExt_Floor_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_ImpExt_Floor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_ImpExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_ImpExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_VideoExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_VideoExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_VideoExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_VideoExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_VideoExt_Ad_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_VideoExt_Ad_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BannerExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BannerExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BannerExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BannerExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_AdQuality_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_AdQuality_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_AppExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_AppExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_AppExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_AppExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_SiteExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_SiteExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_SiteExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_SiteExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_PublisherExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_PublisherExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_DeviceExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_GeoExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_GeoExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_GeoExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_GeoExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_UserExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_UserExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_UserExt_Dt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_UserExt_Dt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_UserExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_UserExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_RegsExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_RegsExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_SourceExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_SourceExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_NativeExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_NativeExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_NativeExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_NativeExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_NativeRequestExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_NativeRequestExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BidResponseExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BidResponseExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_SeatBidExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_SeatBidExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BidExt_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BidExt_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_magnite_openrtb_v2_BidExt_Rp_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_magnite_openrtb_v2_BidExt_Rp_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\022openrtb-xapi.proto\022\026com.magnite.openrt" +
      "b.v2\032\ropenrtb.proto\"*\n\014KeyValuePair\022\013\n\003k" +
      "ey\030\001 \001(\t\022\r\n\005value\030\002 \003(\t\":\n\006Window\022\013\n\003url" +
      "\030\001 \001(\t\022\r\n\005depth\030\002 \001(\005\022\t\n\001w\030\003 \001(\r\022\t\n\001h\030\004 " +
      "\001(\r\"}\n\rBidRequestExt\0224\n\002rp\030\001 \001(\0132(.com.m" +
      "agnite.openrtb.v2.BidRequestExt.Rp\0326\n\002Rp" +
      "\022\017\n\007zone_id\030\001 \001(\005\022\016\n\006badvid\030\002 \003(\005\022\017\n\007bai" +
      "ndid\030\003 \003(\005\"\364\005\n\006ImpExt\022-\n\002rp\030\001 \001(\0132!.com." +
      "magnite.openrtb.v2.ImpExt.Rp\022.\n\006window\030\002" +
      " \001(\0132\036.com.magnite.openrtb.v2.Window\022\032\n\022" +
      "viewabilityvendors\030\003 \003(\t\022\014\n\004gpid\030\004 \001(\t\032%" +
      "\n\010ProxyBid\022\n\n\002id\030\001 \001(\t\022\r\n\005price\030\002 \001(\001\032X\n" +
      "\013ProxyDemand\022\022\n\nmarketrate\030\001 \001(\001\0225\n\004bids" +
      "\030\002 \003(\0132\'.com.magnite.openrtb.v2.ImpExt.P" +
      "roxyBid\032U\n\005Floor\022\n\n\002id\030\001 \001(\t\022\r\n\005price\030\002 " +
      "\001(\001\022\013\n\003dpf\030\003 \001(\010\022\017\n\007pmptier\030\004 \001(\005\022\023\n\013pmp" +
      "priority\030\005 \001(\005\032\210\003\n\002Rp\022\017\n\007zone_id\030\001 \001(\005\022\013" +
      "\n\003enc\030\002 \001(\t\022\014\n\004slot\030\003 \001(\t\0224\n\006target\030\004 \003(" +
      "\0132$.com.magnite.openrtb.v2.KeyValuePair\022" +
      "3\n\005track\030\005 \003(\0132$.com.magnite.openrtb.v2." +
      "KeyValuePair\0221\n\003rtb\030\006 \003(\0132$.com.magnite." +
      "openrtb.v2.KeyValuePair\0223\n\005nolog\030\007 \003(\0132$" +
      ".com.magnite.openrtb.v2.KeyValuePair\022?\n\013" +
      "proxydemand\030\010 \001(\0132*.com.magnite.openrtb." +
      "v2.ImpExt.ProxyDemand\0224\n\006floors\030\t \003(\0132$." +
      "com.magnite.openrtb.v2.ImpExt.Floor\022\014\n\004g" +
      "pid\030\n \001(\t\"\350\001\n\010VideoExt\022\023\n\013orientation\030\001 " +
      "\001(\t\022/\n\002rp\030\002 \001(\0132#.com.magnite.openrtb.v2" +
      ".VideoExt.Rp\022/\n\002ad\030\003 \001(\0132#.com.magnite.o" +
      "penrtb.v2.VideoExt.Ad\022\014\n\004skip\030\004 \001(\010\022\021\n\ts" +
      "kipdelay\030\005 \001(\005\022\021\n\tplacement\030\006 \001(\005\032\025\n\002Rp\022" +
      "\017\n\007size_id\030\001 \001(\r\032\032\n\002Ad\022\t\n\001w\030\001 \001(\005\022\t\n\001h\030\002" +
      " \001(\005\"\241\001\n\tBannerExt\0220\n\002rp\030\001 \001(\0132$.com.mag" +
      "nite.openrtb.v2.BannerExt.Rp\032b\n\002Rp\022\017\n\007si" +
      "ze_id\030\001 \001(\r\022\024\n\014alt_size_ids\030\002 \003(\r\022\014\n\004mim" +
      "e\030\003 \001(\t\022\017\n\007usenurl\030\004 \001(\010\022\026\n\016useimptracke" +
      "rs\030\005 \001(\010\" \n\tAdQuality\022\023\n\013sensitivity\030\001 \001" +
      "(\t\"\221\001\n\006AppExt\022-\n\002rp\030\001 \001(\0132!.com.magnite." +
      "openrtb.v2.AppExt.Rp\032X\n\002Rp\022\017\n\007site_id\030\001 " +
      "\001(\r\022-\n\002aq\030\002 \001(\0132!.com.magnite.openrtb.v2" +
      ".AdQuality\022\022\n\nblocklists\030\003 \003(\t\"\303\001\n\007SiteE" +
      "xt\022.\n\002rp\030\001 \001(\0132\".com.magnite.openrtb.v2." +
      "SiteExt.Rp\022.\n\006window\030\002 \001(\0132\036.com.magnite" +
      ".openrtb.v2.Window\032X\n\002Rp\022\017\n\007site_id\030\001 \001(" +
      "\r\022-\n\002aq\030\002 \001(\0132!.com.magnite.openrtb.v2.A" +
      "dQuality\022\022\n\nblocklists\030\003 \003(\t\"]\n\014Publishe" +
      "rExt\0223\n\002rp\030\001 \001(\0132\'.com.magnite.openrtb.v" +
      "2.PublisherExt.Rp\032\030\n\002Rp\022\022\n\naccount_id\030\001 " +
      "\001(\005\"\324\001\n\tDeviceExt\0220\n\002rp\030\001 \001(\0132$.com.magn" +
      "ite.openrtb.v2.DeviceExt.Rp\022\016\n\006ipmask\030\002 " +
      "\001(\010\0224\n\004dooh\030\003 \001(\0132&.com.magnite.openrtb." +
      "v2.DeviceExt.Dooh\0322\n\002Rp\022\013\n\003res\030\001 \001(\t\022\022\n\n" +
      "pixelratio\030\002 \001(\001\022\013\n\003xff\030\003 \001(\t\032\033\n\004Dooh\022\023\n" +
      "\013impmultiply\030\001 \001(\001\"N\n\006GeoExt\022-\n\002rp\030\001 \001(\013" +
      "2!.com.magnite.openrtb.v2.GeoExt.Rp\032\025\n\002R" +
      "p\022\017\n\007consent\030\001 \001(\005\"\354\001\n\007UserExt\022.\n\002dt\030\001 \001" +
      "(\0132\".com.magnite.openrtb.v2.UserExt.Dt\022." +
      "\n\002rp\030\003 \001(\0132\".com.magnite.openrtb.v2.User" +
      "Ext.Rp\022\024\n\014liveramp_idl\030\004 \001(\t\032/\n\002Dt\022\n\n\002id" +
      "\030\001 \001(\t\022\014\n\004pref\030\002 \001(\004\022\017\n\004keyv\030\003 \001(\r:\0011\032:\n" +
      "\002Rp\0224\n\006target\030\001 \003(\0132$.com.magnite.openrt" +
      "b.v2.KeyValuePair\"\031\n\007RegsExt\022\016\n\006s22580\030\001" +
      " \001(\010\"\032\n\tSourceExt\022\r\n\005ssreq\030\001 \001(\010\"T\n\tNati" +
      "veExt\0220\n\002rp\030\001 \001(\0132$.com.magnite.openrtb." +
      "v2.NativeExt.Rp\032\025\n\002Rp\022\017\n\007size_id\030\001 \001(\r\"#" +
      "\n\020NativeRequestExt\022\017\n\007privacy\030\001 \001(\010\"\202\001\n\016" +
      "BidResponseExt\0225\n\002rp\030\001 \001(\0132).com.magnite" +
      ".openrtb.v2.BidResponseExt.Rp\0329\n\002Rp\022\022\n\ns" +
      "tatuscode\030\001 \001(\005\022\021\n\tstatusmsg\030\002 \001(\t\022\014\n\004ti" +
      "me\030\003 \001(\005\"T\n\nSeatBidExt\0221\n\002rp\030\001 \001(\0132%.com" +
      ".magnite.openrtb.v2.SeatBidExt.Rp\032\023\n\002Rp\022" +
      "\r\n\005buyer\030\001 \001(\t\"\372\002\n\006BidExt\022-\n\002rp\030\001 \001(\0132!." +
      "com.magnite.openrtb.v2.BidExt.Rp\032\300\002\n\002Rp\022" +
      "\r\n\005advid\030\001 \001(\005\022\014\n\004mime\030\002 \001(\t\022\016\n\006adtype\030\003" +
      " \001(\t\022\017\n\007size_id\030\004 \001(\r\0227\n\ttargeting\030\005 \003(\013" +
      "2$.com.magnite.openrtb.v2.KeyValuePair\022\023" +
      "\n\013creativeapi\030\006 \001(\r\022\032\n\022viewabilityvendor" +
      "s\030\007 \003(\t\022\021\n\testimated\030\010 \001(\005\022\021\n\tadjustbid\030" +
      "\t \001(\001\022\032\n\022deprecated_pmptier\030\n \001(\t\022\014\n\004aqi" +
      "d\030\013 \001(\t\022\016\n\006aindid\030\014 \003(\005\022\014\n\004burl\030\r \001(\t\022\023\n" +
      "\013imptrackers\030\016 \003(\t\022\017\n\007pmptier\030\017 \001(\005:b\n\013b" +
      "id_request\022%.com.iabtechlab.openrtb.v2.B" +
      "idRequest\030\355\' \001(\0132%.com.magnite.openrtb.v" +
      "2.BidRequestExt:W\n\003imp\022).com.iabtechlab." +
      "openrtb.v2.BidRequest.Imp\030\356\' \001(\0132\036.com.m" +
      "agnite.openrtb.v2.ImpExt:a\n\005video\022/.com." +
      "iabtechlab.openrtb.v2.BidRequest.Imp.Vid" +
      "eo\030\357\' \001(\0132 .com.magnite.openrtb.v2.Video" +
      "Ext:d\n\006banner\0220.com.iabtechlab.openrtb.v" +
      "2.BidRequest.Imp.Banner\030\360\' \001(\0132!.com.mag" +
      "nite.openrtb.v2.BannerExt:W\n\003app\022).com.i" +
      "abtechlab.openrtb.v2.BidRequest.App\030\361\' \001" +
      "(\0132\036.com.magnite.openrtb.v2.AppExt:Z\n\004si" +
      "te\022*.com.iabtechlab.openrtb.v2.BidReques" +
      "t.Site\030\362\' \001(\0132\037.com.magnite.openrtb.v2.S" +
      "iteExt:i\n\tpublisher\022/.com.iabtechlab.ope" +
      "nrtb.v2.BidRequest.Publisher\030\363\' \001(\0132$.co" +
      "m.magnite.openrtb.v2.PublisherExt:`\n\006dev" +
      "ice\022,.com.iabtechlab.openrtb.v2.BidReque" +
      "st.Device\030\364\' \001(\0132!.com.magnite.openrtb.v" +
      "2.DeviceExt:W\n\003geo\022).com.iabtechlab.open" +
      "rtb.v2.BidRequest.Geo\030\365\' \001(\0132\036.com.magni" +
      "te.openrtb.v2.GeoExt:Z\n\004user\022*.com.iabte" +
      "chlab.openrtb.v2.BidRequest.User\030\366\' \001(\0132" +
      "\037.com.magnite.openrtb.v2.UserExt:Z\n\004regs" +
      "\022*.com.iabtechlab.openrtb.v2.BidRequest." +
      "Regs\030\367\' \001(\0132\037.com.magnite.openrtb.v2.Reg" +
      "sExt:`\n\006source\022,.com.iabtechlab.openrtb." +
      "v2.BidRequest.Source\030\370\' \001(\0132!.com.magnit" +
      "e.openrtb.v2.SourceExt:d\n\006native\0220.com.i" +
      "abtechlab.openrtb.v2.BidRequest.Imp.Nati" +
      "ve\030\371\' \001(\0132!.com.magnite.openrtb.v2.Nativ" +
      "eExt:k\n\016native_request\022(.com.iabtechlab." +
      "openrtb.v2.NativeRequest\030\372\' \001(\0132(.com.ma" +
      "gnite.openrtb.v2.NativeRequestExt:e\n\014bid" +
      "_response\022&.com.iabtechlab.openrtb.v2.Bi" +
      "dResponse\030\321( \001(\0132&.com.magnite.openrtb.v" +
      "2.BidResponseExt:d\n\007seatbid\022..com.iabtec" +
      "hlab.openrtb.v2.BidResponse.SeatBid\030\322( \001" +
      "(\0132\".com.magnite.openrtb.v2.SeatBidExt:`" +
      "\n\003bid\0222.com.iabtechlab.openrtb.v2.BidRes" +
      "ponse.SeatBid.Bid\030\323( \001(\0132\036.com.magnite.o" +
      "penrtb.v2.BidExtB\rB\013OpenRtbXapi"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.iabtechlab.openrtb.v2.OpenRtb.getDescriptor(),
        });
    internal_static_com_magnite_openrtb_v2_KeyValuePair_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_magnite_openrtb_v2_KeyValuePair_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_KeyValuePair_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_com_magnite_openrtb_v2_Window_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_magnite_openrtb_v2_Window_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_Window_descriptor,
        new java.lang.String[] { "Url", "Depth", "W", "H", });
    internal_static_com_magnite_openrtb_v2_BidRequestExt_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_com_magnite_openrtb_v2_BidRequestExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BidRequestExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_BidRequestExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BidRequestExt_Rp_descriptor,
        new java.lang.String[] { "ZoneId", "Badvid", "Baindid", });
    internal_static_com_magnite_openrtb_v2_ImpExt_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_com_magnite_openrtb_v2_ImpExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_ImpExt_descriptor,
        new java.lang.String[] { "Rp", "Window", "Viewabilityvendors", "Gpid", });
    internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_descriptor =
      internal_static_com_magnite_openrtb_v2_ImpExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_ImpExt_ProxyBid_descriptor,
        new java.lang.String[] { "Id", "Price", });
    internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_descriptor =
      internal_static_com_magnite_openrtb_v2_ImpExt_descriptor.getNestedTypes().get(1);
    internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_ImpExt_ProxyDemand_descriptor,
        new java.lang.String[] { "Marketrate", "Bids", });
    internal_static_com_magnite_openrtb_v2_ImpExt_Floor_descriptor =
      internal_static_com_magnite_openrtb_v2_ImpExt_descriptor.getNestedTypes().get(2);
    internal_static_com_magnite_openrtb_v2_ImpExt_Floor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_ImpExt_Floor_descriptor,
        new java.lang.String[] { "Id", "Price", "Dpf", "Pmptier", "Pmppriority", });
    internal_static_com_magnite_openrtb_v2_ImpExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_ImpExt_descriptor.getNestedTypes().get(3);
    internal_static_com_magnite_openrtb_v2_ImpExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_ImpExt_Rp_descriptor,
        new java.lang.String[] { "ZoneId", "Enc", "Slot", "Target", "Track", "Rtb", "Nolog", "Proxydemand", "Floors", "Gpid", });
    internal_static_com_magnite_openrtb_v2_VideoExt_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_com_magnite_openrtb_v2_VideoExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_VideoExt_descriptor,
        new java.lang.String[] { "Orientation", "Rp", "Ad", "Skip", "Skipdelay", "Placement", });
    internal_static_com_magnite_openrtb_v2_VideoExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_VideoExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_VideoExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_VideoExt_Rp_descriptor,
        new java.lang.String[] { "SizeId", });
    internal_static_com_magnite_openrtb_v2_VideoExt_Ad_descriptor =
      internal_static_com_magnite_openrtb_v2_VideoExt_descriptor.getNestedTypes().get(1);
    internal_static_com_magnite_openrtb_v2_VideoExt_Ad_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_VideoExt_Ad_descriptor,
        new java.lang.String[] { "W", "H", });
    internal_static_com_magnite_openrtb_v2_BannerExt_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_com_magnite_openrtb_v2_BannerExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BannerExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_BannerExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_BannerExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_BannerExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BannerExt_Rp_descriptor,
        new java.lang.String[] { "SizeId", "AltSizeIds", "Mime", "Usenurl", "Useimptrackers", });
    internal_static_com_magnite_openrtb_v2_AdQuality_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_com_magnite_openrtb_v2_AdQuality_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_AdQuality_descriptor,
        new java.lang.String[] { "Sensitivity", });
    internal_static_com_magnite_openrtb_v2_AppExt_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_com_magnite_openrtb_v2_AppExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_AppExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_AppExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_AppExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_AppExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_AppExt_Rp_descriptor,
        new java.lang.String[] { "SiteId", "Aq", "Blocklists", });
    internal_static_com_magnite_openrtb_v2_SiteExt_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_com_magnite_openrtb_v2_SiteExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_SiteExt_descriptor,
        new java.lang.String[] { "Rp", "Window", });
    internal_static_com_magnite_openrtb_v2_SiteExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_SiteExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_SiteExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_SiteExt_Rp_descriptor,
        new java.lang.String[] { "SiteId", "Aq", "Blocklists", });
    internal_static_com_magnite_openrtb_v2_PublisherExt_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_com_magnite_openrtb_v2_PublisherExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_PublisherExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_PublisherExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_PublisherExt_Rp_descriptor,
        new java.lang.String[] { "AccountId", });
    internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_com_magnite_openrtb_v2_DeviceExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor,
        new java.lang.String[] { "Rp", "Ipmask", "Dooh", });
    internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_DeviceExt_Rp_descriptor,
        new java.lang.String[] { "Res", "Pixelratio", "Xff", });
    internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_descriptor =
      internal_static_com_magnite_openrtb_v2_DeviceExt_descriptor.getNestedTypes().get(1);
    internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_DeviceExt_Dooh_descriptor,
        new java.lang.String[] { "Impmultiply", });
    internal_static_com_magnite_openrtb_v2_GeoExt_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_com_magnite_openrtb_v2_GeoExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_GeoExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_GeoExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_GeoExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_GeoExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_GeoExt_Rp_descriptor,
        new java.lang.String[] { "Consent", });
    internal_static_com_magnite_openrtb_v2_UserExt_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_com_magnite_openrtb_v2_UserExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_UserExt_descriptor,
        new java.lang.String[] { "Dt", "Rp", "LiverampIdl", });
    internal_static_com_magnite_openrtb_v2_UserExt_Dt_descriptor =
      internal_static_com_magnite_openrtb_v2_UserExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_UserExt_Dt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_UserExt_Dt_descriptor,
        new java.lang.String[] { "Id", "Pref", "Keyv", });
    internal_static_com_magnite_openrtb_v2_UserExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_UserExt_descriptor.getNestedTypes().get(1);
    internal_static_com_magnite_openrtb_v2_UserExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_UserExt_Rp_descriptor,
        new java.lang.String[] { "Target", });
    internal_static_com_magnite_openrtb_v2_RegsExt_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_com_magnite_openrtb_v2_RegsExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_RegsExt_descriptor,
        new java.lang.String[] { "S22580", });
    internal_static_com_magnite_openrtb_v2_SourceExt_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_com_magnite_openrtb_v2_SourceExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_SourceExt_descriptor,
        new java.lang.String[] { "Ssreq", });
    internal_static_com_magnite_openrtb_v2_NativeExt_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_com_magnite_openrtb_v2_NativeExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_NativeExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_NativeExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_NativeExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_NativeExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_NativeExt_Rp_descriptor,
        new java.lang.String[] { "SizeId", });
    internal_static_com_magnite_openrtb_v2_NativeRequestExt_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_com_magnite_openrtb_v2_NativeRequestExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_NativeRequestExt_descriptor,
        new java.lang.String[] { "Privacy", });
    internal_static_com_magnite_openrtb_v2_BidResponseExt_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_com_magnite_openrtb_v2_BidResponseExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BidResponseExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_BidResponseExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BidResponseExt_Rp_descriptor,
        new java.lang.String[] { "Statuscode", "Statusmsg", "Time", });
    internal_static_com_magnite_openrtb_v2_SeatBidExt_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_com_magnite_openrtb_v2_SeatBidExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_SeatBidExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_SeatBidExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_SeatBidExt_Rp_descriptor,
        new java.lang.String[] { "Buyer", });
    internal_static_com_magnite_openrtb_v2_BidExt_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_com_magnite_openrtb_v2_BidExt_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BidExt_descriptor,
        new java.lang.String[] { "Rp", });
    internal_static_com_magnite_openrtb_v2_BidExt_Rp_descriptor =
      internal_static_com_magnite_openrtb_v2_BidExt_descriptor.getNestedTypes().get(0);
    internal_static_com_magnite_openrtb_v2_BidExt_Rp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_magnite_openrtb_v2_BidExt_Rp_descriptor,
        new java.lang.String[] { "Advid", "Mime", "Adtype", "SizeId", "Targeting", "Creativeapi", "Viewabilityvendors", "Estimated", "Adjustbid", "DeprecatedPmptier", "Aqid", "Aindid", "Burl", "Imptrackers", "Pmptier", });
    bidRequest.internalInit(descriptor.getExtensions().get(0));
    imp.internalInit(descriptor.getExtensions().get(1));
    video.internalInit(descriptor.getExtensions().get(2));
    banner.internalInit(descriptor.getExtensions().get(3));
    app.internalInit(descriptor.getExtensions().get(4));
    site.internalInit(descriptor.getExtensions().get(5));
    publisher.internalInit(descriptor.getExtensions().get(6));
    device.internalInit(descriptor.getExtensions().get(7));
    geo.internalInit(descriptor.getExtensions().get(8));
    user.internalInit(descriptor.getExtensions().get(9));
    regs.internalInit(descriptor.getExtensions().get(10));
    source.internalInit(descriptor.getExtensions().get(11));
    native_.internalInit(descriptor.getExtensions().get(12));
    nativeRequest.internalInit(descriptor.getExtensions().get(13));
    bidResponse.internalInit(descriptor.getExtensions().get(14));
    seatbid.internalInit(descriptor.getExtensions().get(15));
    bid.internalInit(descriptor.getExtensions().get(16));
    com.iabtechlab.openrtb.v2.OpenRtb.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
