text:
package com.amazonaws.services.cognitoidp.model;

import java.io.Serializable;
import javax.annotation.Generated;
import com.amazonaws.protocol.StructuredPojo;
import com.amazonaws.protocol.ProtocolMarshaller;

/**
 *

 * A container for information about the user pool.
 *

 *
 * @see AWS API
 *      Documentation
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class UserPoolType implements Serializable, Cloneable, StructuredPojo {

    /**
     *

     * The ID of the user pool.
     *

     */
    private String id;
    /**
     *

     * The name of the user pool.
     *

     */
    private String name;
    /**
     *

     * The policies associated with the user pool.
     *

     */
    private UserPoolPolicyType policies;
    /**
     *

     * The AWS Lambda triggers associated with the user pool.
     *

     */
    private LambdaConfigType lambdaConfig;
    /**
     *

     * The status of a user pool.
     *

     */
    private String status;
    /**
     *

     * The date the user pool was last modified.
     *

     */
    private java.util.Date lastModifiedDate;
    /**
     *

     * The date the user pool was created.
     *

     */
    private java.util.Date creationDate;
    /**
     *

     * A container with the schema attributes of a user pool.
     *

     */
    private java.util.List<SchemaAttributeType> schemaAttributes;
    /**
     *

     * Specifies the attributes that are auto-verified in a user pool.
     *

     */
    private java.util.List<String> autoVerifiedAttributes;
    /**
     *

     * Specifies the attributes that are aliased in a user pool.
     *

     */
    private java.util.List<String> aliasAttributes;
    /**
     *

     * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     *

     */
    private java.util.List<String> usernameAttributes;
    /**
     *

     * The contents of the SMS verification message.
     *

     */
    private String smsVerificationMessage;
    /**
     *

     * The contents of the email verification message.
     *

     */
    private String emailVerificationMessage;
    /**
     *

     * The subject of the email verification message.
     *

     */
    private String emailVerificationSubject;
    /**
     *

     * The template for verification messages.
     *

     */
    private VerificationMessageTemplateType verificationMessageTemplate;
    /**
     *

     * The contents of the SMS authentication message.
     *

     */
    private String smsAuthenticationMessage;
    /**
     *

     * Can be one of the following values:
     *

     *

     *

     *

     * OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     * ON - MFA tokens are required for all user registrations. You can only specify required when you are
     * initially creating a user pool.
     *

     *

     *

     *

     * OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     *

     */
    private String mfaConfiguration;
    /**
     *

     * The device configuration.
     *

     */
    private DeviceConfigurationType deviceConfiguration;
    /**
     *

     * A number estimating the size of the user pool.
     *

     */
    private Integer estimatedNumberOfUsers;
    /**
     *

     * The email configuration.
     *

     */
    private EmailConfigurationType emailConfiguration;
    /**
     *

     * The SMS configuration.
     *

     */
    private SmsConfigurationType smsConfiguration;
    /**
     *

     * The tags that are assigned to the user pool. A tag is a label that you can apply to user pools to categorize and
     * manage them in different ways, such as by purpose, owner, environment, or other criteria.
     *

     */
    private java.util.Map<String, String> userPoolTags;
    /**
     *

     * The reason why the SMS configuration cannot send the messages to your users.
     *

     */
    private String smsConfigurationFailure;
    /**
     *

     * The reason why the email configuration cannot send the messages to your users.
     *

     */
    private String emailConfigurationFailure;
    /**
     *

     * Holds the domain prefix if the user pool has a domain associated with it.
     *

     */
    private String domain;
    /**
     *

     * A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a custom domain
     * to host the sign-up and sign-in pages for your application. For example: auth.example.com.
     *

     *

     * For more information about adding a custom domain to your user pool, see Using
     * Your Own Domain for the Hosted UI.
     *

     */
    private String customDomain;
    /**
     *

     * The configuration for AdminCreateUser requests.
     *

     */
    private AdminCreateUserConfigType adminCreateUserConfig;
    /**
     *

     * The user pool add-ons.
     *

     */
    private UserPoolAddOnsType userPoolAddOns;
    /**
     *

     * The Amazon Resource Name (ARN) for the user pool.
     *

     */
    private String arn;

    /**
     *

     * The ID of the user pool.
     *

     *
     * @param id
     *        The ID of the user pool.
     */

    public void setId(String id) {
        this.id = id;
    }

    /**
     *

     * The ID of the user pool.
     *

     *
     * @return The ID of the user pool.
     */

    public String getId() {
        return this.id;
    }

    /**
     *

     * The ID of the user pool.
     *

     *
     * @param id
     *        The ID of the user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withId(String id) {
        setId(id);
        return this;
    }

    /**
     *

     * The name of the user pool.
     *

     *
     * @param name
     *        The name of the user pool.
     */

    public void setName(String name) {
        this.name = name;
    }

    /**
     *

     * The name of the user pool.
     *

     *
     * @return The name of the user pool.
     */

    public String getName() {
        return this.name;
    }

    /**
     *

     * The name of the user pool.
     *

     *
     * @param name
     *        The name of the user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withName(String name) {
        setName(name);
        return this;
    }

    /**
     *

     * The policies associated with the user pool.
     *

     *
     * @param policies
     *        The policies associated with the user pool.
     */

    public void setPolicies(UserPoolPolicyType policies) {
        this.policies = policies;
    }

    /**
     *

     * The policies associated with the user pool.
     *

     *
     * @return The policies associated with the user pool.
     */

    public UserPoolPolicyType getPolicies() {
        return this.policies;
    }

    /**
     *

     * The policies associated with the user pool.
     *

     *
     * @param policies
     *        The policies associated with the user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withPolicies(UserPoolPolicyType policies) {
        setPolicies(policies);
        return this;
    }

    /**
     *

     * The AWS Lambda triggers associated with the user pool.
     *

     *
     * @param lambdaConfig
     *        The AWS Lambda triggers associated with the user pool.
     */

    public void setLambdaConfig(LambdaConfigType lambdaConfig) {
        this.lambdaConfig = lambdaConfig;
    }

    /**
     *

     * The AWS Lambda triggers associated with the user pool.
     *

     *
     * @return The AWS Lambda triggers associated with the user pool.
     */

    public LambdaConfigType getLambdaConfig() {
        return this.lambdaConfig;
    }

    /**
     *

     * The AWS Lambda triggers associated with the user pool.
     *

     *
     * @param lambdaConfig
     *        The AWS Lambda triggers associated with the user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withLambdaConfig(LambdaConfigType lambdaConfig) {
        setLambdaConfig(lambdaConfig);
        return this;
    }

    /**
     *

     * The status of a user pool.
     *

     *
     * @param status
     *        The status of a user pool.
     * @see StatusType
     */

    public void setStatus(String status) {
        this.status = status;
    }

    /**
     *

     * The status of a user pool.
     *

     *
     * @return The status of a user pool.
     * @see StatusType
     */

    public String getStatus() {
        return this.status;
    }

    /**
     *

     * The status of a user pool.
     *

     *
     * @param status
     *        The status of a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see StatusType
     */

    public UserPoolType withStatus(String status) {
        setStatus(status);
        return this;
    }

    /**
     *

     * The status of a user pool.
     *

     *
     * @param status
     *        The status of a user pool.
     * @see StatusType
     */

    public void setStatus(StatusType status) {
        withStatus(status);
    }

    /**
     *

     * The status of a user pool.
     *

     *
     * @param status
     *        The status of a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see StatusType
     */

    public UserPoolType withStatus(StatusType status) {
        this.status = status.toString();
        return this;
    }

    /**
     *

     * The date the user pool was last modified.
     *

     *
     * @param lastModifiedDate
     *        The date the user pool was last modified.
     */

    public void setLastModifiedDate(java.util.Date lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

    /**
     *

     * The date the user pool was last modified.
     *

     *
     * @return The date the user pool was last modified.
     */

    public java.util.Date getLastModifiedDate() {
        return this.lastModifiedDate;
    }

    /**
     *

     * The date the user pool was last modified.
     *

     *
     * @param lastModifiedDate
     *        The date the user pool was last modified.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withLastModifiedDate(java.util.Date lastModifiedDate) {
        setLastModifiedDate(lastModifiedDate);
        return this;
    }

    /**
     *

     * The date the user pool was created.
     *

     *
     * @param creationDate
     *        The date the user pool was created.
     */

    public void setCreationDate(java.util.Date creationDate) {
        this.creationDate = creationDate;
    }

    /**
     *

     * The date the user pool was created.
     *

     *
     * @return The date the user pool was created.
     */

    public java.util.Date getCreationDate() {
        return this.creationDate;
    }

    /**
     *

     * The date the user pool was created.
     *

     *
     * @param creationDate
     *        The date the user pool was created.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withCreationDate(java.util.Date creationDate) {
        setCreationDate(creationDate);
        return this;
    }

    /**
     *

     * A container with the schema attributes of a user pool.
     *

     *
     * @return A container with the schema attributes of a user pool.
     */

    public java.util.List<SchemaAttributeType> getSchemaAttributes() {
        return schemaAttributes;
    }

    /**
     *

     * A container with the schema attributes of a user pool.
     *

     *
     * @param schemaAttributes
     *        A container with the schema attributes of a user pool.
     */

    public void setSchemaAttributes(java.util.Collection<SchemaAttributeType> schemaAttributes) {
        if (schemaAttributes == null) {
            this.schemaAttributes = null;
            return;
        }

        this.schemaAttributes = new java.util.ArrayList<SchemaAttributeType>(schemaAttributes);
    }

    /**
     *

     * A container with the schema attributes of a user pool.
     *

     *

     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setSchemaAttributes(java.util.Collection)} or {@link #withSchemaAttributes(java.util.Collection)} if you
     * want to override the existing values.
     *

     *
     * @param schemaAttributes
     *        A container with the schema attributes of a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withSchemaAttributes(SchemaAttributeType... schemaAttributes) {
        if (this.schemaAttributes == null) {
            setSchemaAttributes(new java.util.ArrayList<SchemaAttributeType>(schemaAttributes.length));
        }
        for (SchemaAttributeType ele : schemaAttributes) {
            this.schemaAttributes.add(ele);
        }
        return this;
    }

    /**
     *

     * A container with the schema attributes of a user pool.
     *

     *
     * @param schemaAttributes
     *        A container with the schema attributes of a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withSchemaAttributes(java.util.Collection<SchemaAttributeType> schemaAttributes) {
        setSchemaAttributes(schemaAttributes);
        return this;
    }

    /**
     *

     * Specifies the attributes that are auto-verified in a user pool.
     *

     *
     * @return Specifies the attributes that are auto-verified in a user pool.
     * @see VerifiedAttributeType
     */

    public java.util.List<String> getAutoVerifiedAttributes() {
        return autoVerifiedAttributes;
    }

    /**
     *

     * Specifies the attributes that are auto-verified in a user pool.
     *

     *
     * @param autoVerifiedAttributes
     *        Specifies the attributes that are auto-verified in a user pool.
     * @see VerifiedAttributeType
     */

    public void setAutoVerifiedAttributes(java.util.Collection<String> autoVerifiedAttributes) {
        if (autoVerifiedAttributes == null) {
            this.autoVerifiedAttributes = null;
            return;
        }

        this.autoVerifiedAttributes = new java.util.ArrayList<String>(autoVerifiedAttributes);
    }

    /**
     *

     * Specifies the attributes that are auto-verified in a user pool.
     *

     *

     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setAutoVerifiedAttributes(java.util.Collection)} or
     * {@link #withAutoVerifiedAttributes(java.util.Collection)} if you want to override the existing values.
     *

     *
     * @param autoVerifiedAttributes
     *        Specifies the attributes that are auto-verified in a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see VerifiedAttributeType
     */

    public UserPoolType withAutoVerifiedAttributes(String... autoVerifiedAttributes) {
        if (this.autoVerifiedAttributes == null) {
            setAutoVerifiedAttributes(new java.util.ArrayList<String>(autoVerifiedAttributes.length));
        }
        for (String ele : autoVerifiedAttributes) {
            this.autoVerifiedAttributes.add(ele);
        }
        return this;
    }

    /**
     *

     * Specifies the attributes that are auto-verified in a user pool.
     *

     *
     * @param autoVerifiedAttributes
     *        Specifies the attributes that are auto-verified in a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see VerifiedAttributeType
     */

    public UserPoolType withAutoVerifiedAttributes(java.util.Collection<String> autoVerifiedAttributes) {
        setAutoVerifiedAttributes(autoVerifiedAttributes);
        return this;
    }

    /**
     *

     * Specifies the attributes that are auto-verified in a user pool.
     *

     *
     * @param autoVerifiedAttributes
     *        Specifies the attributes that are auto-verified in a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see VerifiedAttributeType
     */

    public UserPoolType withAutoVerifiedAttributes(VerifiedAttributeType... autoVerifiedAttributes) {
        java.util.ArrayList<String> autoVerifiedAttributesCopy = new java.util.ArrayList<String>(autoVerifiedAttributes.length);
        for (VerifiedAttributeType value : autoVerifiedAttributes) {
            autoVerifiedAttributesCopy.add(value.toString());
        }
        if (getAutoVerifiedAttributes() == null) {
            setAutoVerifiedAttributes(autoVerifiedAttributesCopy);
        } else {
            getAutoVerifiedAttributes().addAll(autoVerifiedAttributesCopy);
        }
        return this;
    }

    /**
     *

     * Specifies the attributes that are aliased in a user pool.
     *

     *
     * @return Specifies the attributes that are aliased in a user pool.
     * @see AliasAttributeType
     */

    public java.util.List<String> getAliasAttributes() {
        return aliasAttributes;
    }

    /**
     *

     * Specifies the attributes that are aliased in a user pool.
     *

     *
     * @param aliasAttributes
     *        Specifies the attributes that are aliased in a user pool.
     * @see AliasAttributeType
     */

    public void setAliasAttributes(java.util.Collection<String> aliasAttributes) {
        if (aliasAttributes == null) {
            this.aliasAttributes = null;
            return;
        }

        this.aliasAttributes = new java.util.ArrayList<String>(aliasAttributes);
    }

    /**
     *

     * Specifies the attributes that are aliased in a user pool.
     *

     *

     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setAliasAttributes(java.util.Collection)} or {@link #withAliasAttributes(java.util.Collection)} if you
     * want to override the existing values.
     *

     *
     * @param aliasAttributes
     *        Specifies the attributes that are aliased in a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see AliasAttributeType
     */

    public UserPoolType withAliasAttributes(String... aliasAttributes) {
        if (this.aliasAttributes == null) {
            setAliasAttributes(new java.util.ArrayList<String>(aliasAttributes.length));
        }
        for (String ele : aliasAttributes) {
            this.aliasAttributes.add(ele);
        }
        return this;
    }

    /**
     *

     * Specifies the attributes that are aliased in a user pool.
     *

     *
     * @param aliasAttributes
     *        Specifies the attributes that are aliased in a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see AliasAttributeType
     */

    public UserPoolType withAliasAttributes(java.util.Collection<String> aliasAttributes) {
        setAliasAttributes(aliasAttributes);
        return this;
    }

    /**
     *

     * Specifies the attributes that are aliased in a user pool.
     *

     *
     * @param aliasAttributes
     *        Specifies the attributes that are aliased in a user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see AliasAttributeType
     */

    public UserPoolType withAliasAttributes(AliasAttributeType... aliasAttributes) {
        java.util.ArrayList<String> aliasAttributesCopy = new java.util.ArrayList<String>(aliasAttributes.length);
        for (AliasAttributeType value : aliasAttributes) {
            aliasAttributesCopy.add(value.toString());
        }
        if (getAliasAttributes() == null) {
            setAliasAttributes(aliasAttributesCopy);
        } else {
            getAliasAttributes().addAll(aliasAttributesCopy);
        }
        return this;
    }

    /**
     *

     * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     *

     *
     * @return Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     * @see UsernameAttributeType
     */

    public java.util.List<String> getUsernameAttributes() {
        return usernameAttributes;
    }

    /**
     *

     * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     *

     *
     * @param usernameAttributes
     *        Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     * @see UsernameAttributeType
     */

    public void setUsernameAttributes(java.util.Collection<String> usernameAttributes) {
        if (usernameAttributes == null) {
            this.usernameAttributes = null;
            return;
        }

        this.usernameAttributes = new java.util.ArrayList<String>(usernameAttributes);
    }

    /**
     *

     * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     *

     *

     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setUsernameAttributes(java.util.Collection)} or {@link #withUsernameAttributes(java.util.Collection)} if
     * you want to override the existing values.
     *

     *
     * @param usernameAttributes
     *        Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see UsernameAttributeType
     */

    public UserPoolType withUsernameAttributes(String... usernameAttributes) {
        if (this.usernameAttributes == null) {
            setUsernameAttributes(new java.util.ArrayList<String>(usernameAttributes.length));
        }
        for (String ele : usernameAttributes) {
            this.usernameAttributes.add(ele);
        }
        return this;
    }

    /**
     *

     * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     *

     *
     * @param usernameAttributes
     *        Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see UsernameAttributeType
     */

    public UserPoolType withUsernameAttributes(java.util.Collection<String> usernameAttributes) {
        setUsernameAttributes(usernameAttributes);
        return this;
    }

    /**
     *

     * Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     *

     *
     * @param usernameAttributes
     *        Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see UsernameAttributeType
     */

    public UserPoolType withUsernameAttributes(UsernameAttributeType... usernameAttributes) {
        java.util.ArrayList<String> usernameAttributesCopy = new java.util.ArrayList<String>(usernameAttributes.length);
        for (UsernameAttributeType value : usernameAttributes) {
            usernameAttributesCopy.add(value.toString());
        }
        if (getUsernameAttributes() == null) {
            setUsernameAttributes(usernameAttributesCopy);
        } else {
            getUsernameAttributes().addAll(usernameAttributesCopy);
        }
        return this;
    }

    /**
     *

     * The contents of the SMS verification message.
     *

     *
     * @param smsVerificationMessage
     *        The contents of the SMS verification message.
     */

    public void setSmsVerificationMessage(String smsVerificationMessage) {
        this.smsVerificationMessage = smsVerificationMessage;
    }

    /**
     *

     * The contents of the SMS verification message.
     *

     *
     * @return The contents of the SMS verification message.
     */

    public String getSmsVerificationMessage() {
        return this.smsVerificationMessage;
    }

    /**
     *

     * The contents of the SMS verification message.
     *

     *
     * @param smsVerificationMessage
     *        The contents of the SMS verification message.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withSmsVerificationMessage(String smsVerificationMessage) {
        setSmsVerificationMessage(smsVerificationMessage);
        return this;
    }

    /**
     *

     * The contents of the email verification message.
     *

     *
     * @param emailVerificationMessage
     *        The contents of the email verification message.
     */

    public void setEmailVerificationMessage(String emailVerificationMessage) {
        this.emailVerificationMessage = emailVerificationMessage;
    }

    /**
     *

     * The contents of the email verification message.
     *

     *
     * @return The contents of the email verification message.
     */

    public String getEmailVerificationMessage() {
        return this.emailVerificationMessage;
    }

    /**
     *

     * The contents of the email verification message.
     *

     *
     * @param emailVerificationMessage
     *        The contents of the email verification message.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withEmailVerificationMessage(String emailVerificationMessage) {
        setEmailVerificationMessage(emailVerificationMessage);
        return this;
    }

    /**
     *

     * The subject of the email verification message.
     *

     *
     * @param emailVerificationSubject
     *        The subject of the email verification message.
     */

    public void setEmailVerificationSubject(String emailVerificationSubject) {
        this.emailVerificationSubject = emailVerificationSubject;
    }

    /**
     *

     * The subject of the email verification message.
     *

     *
     * @return The subject of the email verification message.
     */

    public String getEmailVerificationSubject() {
        return this.emailVerificationSubject;
    }

    /**
     *

     * The subject of the email verification message.
     *

     *
     * @param emailVerificationSubject
     *        The subject of the email verification message.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withEmailVerificationSubject(String emailVerificationSubject) {
        setEmailVerificationSubject(emailVerificationSubject);
        return this;
    }

    /**
     *

     * The template for verification messages.
     *

     *
     * @param verificationMessageTemplate
     *        The template for verification messages.
     */

    public void setVerificationMessageTemplate(VerificationMessageTemplateType verificationMessageTemplate) {
        this.verificationMessageTemplate = verificationMessageTemplate;
    }

    /**
     *

     * The template for verification messages.
     *

     *
     * @return The template for verification messages.
     */

    public VerificationMessageTemplateType getVerificationMessageTemplate() {
        return this.verificationMessageTemplate;
    }

    /**
     *

     * The template for verification messages.
     *

     *
     * @param verificationMessageTemplate
     *        The template for verification messages.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withVerificationMessageTemplate(VerificationMessageTemplateType verificationMessageTemplate) {
        setVerificationMessageTemplate(verificationMessageTemplate);
        return this;
    }

    /**
     *

     * The contents of the SMS authentication message.
     *

     *
     * @param smsAuthenticationMessage
     *        The contents of the SMS authentication message.
     */

    public void setSmsAuthenticationMessage(String smsAuthenticationMessage) {
        this.smsAuthenticationMessage = smsAuthenticationMessage;
    }

    /**
     *

     * The contents of the SMS authentication message.
     *

     *
     * @return The contents of the SMS authentication message.
     */

    public String getSmsAuthenticationMessage() {
        return this.smsAuthenticationMessage;
    }

    /**
     *

     * The contents of the SMS authentication message.
     *

     *
     * @param smsAuthenticationMessage
     *        The contents of the SMS authentication message.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withSmsAuthenticationMessage(String smsAuthenticationMessage) {
        setSmsAuthenticationMessage(smsAuthenticationMessage);
        return this;
    }

    /**
     *

     * Can be one of the following values:
     *

     *

     *

     *

     * OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     * ON - MFA tokens are required for all user registrations. You can only specify required when you are
     * initially creating a user pool.
     *

     *

     *

     *

     * OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     *

     *
     * @param mfaConfiguration
     *        Can be one of the following values:

     *

     *

     *

     *        OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     *        ON - MFA tokens are required for all user registrations. You can only specify required when
     *        you are initially creating a user pool.
     *

     *

     *

     *

     *        OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     * @see UserPoolMfaType
     */

    public void setMfaConfiguration(String mfaConfiguration) {
        this.mfaConfiguration = mfaConfiguration;
    }

    /**
     *

     * Can be one of the following values:
     *

     *

     *

     *

     * OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     * ON - MFA tokens are required for all user registrations. You can only specify required when you are
     * initially creating a user pool.
     *

     *

     *

     *

     * OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     *

     *
     * @return Can be one of the following values:

     *

     *

     *

     *         OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     *         ON - MFA tokens are required for all user registrations. You can only specify required when
     *         you are initially creating a user pool.
     *

     *

     *

     *

     *         OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     * @see UserPoolMfaType
     */

    public String getMfaConfiguration() {
        return this.mfaConfiguration;
    }

    /**
     *

     * Can be one of the following values:
     *

     *

     *

     *

     * OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     * ON - MFA tokens are required for all user registrations. You can only specify required when you are
     * initially creating a user pool.
     *

     *

     *

     *

     * OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     *

     *
     * @param mfaConfiguration
     *        Can be one of the following values:

     *

     *

     *

     *        OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     *        ON - MFA tokens are required for all user registrations. You can only specify required when
     *        you are initially creating a user pool.
     *

     *

     *

     *

     *        OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     * @return Returns a reference to this object so that method calls can be chained together.
     * @see UserPoolMfaType
     */

    public UserPoolType withMfaConfiguration(String mfaConfiguration) {
        setMfaConfiguration(mfaConfiguration);
        return this;
    }

    /**
     *

     * Can be one of the following values:
     *

     *

     *

     *

     * OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     * ON - MFA tokens are required for all user registrations. You can only specify required when you are
     * initially creating a user pool.
     *

     *

     *

     *

     * OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     *

     *
     * @param mfaConfiguration
     *        Can be one of the following values:

     *

     *

     *

     *        OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     *        ON - MFA tokens are required for all user registrations. You can only specify required when
     *        you are initially creating a user pool.
     *

     *

     *

     *

     *        OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     * @see UserPoolMfaType
     */

    public void setMfaConfiguration(UserPoolMfaType mfaConfiguration) {
        withMfaConfiguration(mfaConfiguration);
    }

    /**
     *

     * Can be one of the following values:
     *

     *

     *

     *

     * OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     * ON - MFA tokens are required for all user registrations. You can only specify required when you are
     * initially creating a user pool.
     *

     *

     *

     *

     * OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     *

     *
     * @param mfaConfiguration
     *        Can be one of the following values:

     *

     *

     *

     *        OFF - MFA tokens are not required and cannot be specified during user registration.
     *

     *

     *

     *

     *        ON - MFA tokens are required for all user registrations. You can only specify required when
     *        you are initially creating a user pool.
     *

     *

     *

     *

     *        OPTIONAL - Users have the option when registering to create an MFA token.
     *

     *

     * @return Returns a reference to this object so that method calls can be chained together.
     * @see UserPoolMfaType
     */

    public UserPoolType withMfaConfiguration(UserPoolMfaType mfaConfiguration) {
        this.mfaConfiguration = mfaConfiguration.toString();
        return this;
    }

    /**
     *

     * The device configuration.
     *

     *
     * @param deviceConfiguration
     *        The device configuration.
     */

    public void setDeviceConfiguration(DeviceConfigurationType deviceConfiguration) {
        this.deviceConfiguration = deviceConfiguration;
    }

    /**
     *

     * The device configuration.
     *

     *
     * @return The device configuration.
     */

    public DeviceConfigurationType getDeviceConfiguration() {
        return this.deviceConfiguration;
    }

    /**
     *

     * The device configuration.
     *

     *
     * @param deviceConfiguration
     *        The device configuration.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withDeviceConfiguration(DeviceConfigurationType deviceConfiguration) {
        setDeviceConfiguration(deviceConfiguration);
        return this;
    }

    /**
     *

     * A number estimating the size of the user pool.
     *

     *
     * @param estimatedNumberOfUsers
     *        A number estimating the size of the user pool.
     */

    public void setEstimatedNumberOfUsers(Integer estimatedNumberOfUsers) {
        this.estimatedNumberOfUsers = estimatedNumberOfUsers;
    }

    /**
     *

     * A number estimating the size of the user pool.
     *

     *
     * @return A number estimating the size of the user pool.
     */

    public Integer getEstimatedNumberOfUsers() {
        return this.estimatedNumberOfUsers;
    }

    /**
     *

     * A number estimating the size of the user pool.
     *

     *
     * @param estimatedNumberOfUsers
     *        A number estimating the size of the user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withEstimatedNumberOfUsers(Integer estimatedNumberOfUsers) {
        setEstimatedNumberOfUsers(estimatedNumberOfUsers);
        return this;
    }

    /**
     *

     * The email configuration.
     *

     *
     * @param emailConfiguration
     *        The email configuration.
     */

    public void setEmailConfiguration(EmailConfigurationType emailConfiguration) {
        this.emailConfiguration = emailConfiguration;
    }

    /**
     *

     * The email configuration.
     *

     *
     * @return The email configuration.
     */

    public EmailConfigurationType getEmailConfiguration() {
        return this.emailConfiguration;
    }

    /**
     *

     * The email configuration.
     *

     *
     * @param emailConfiguration
     *        The email configuration.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withEmailConfiguration(EmailConfigurationType emailConfiguration) {
        setEmailConfiguration(emailConfiguration);
        return this;
    }

    /**
     *

     * The SMS configuration.
     *

     *
     * @param smsConfiguration
     *        The SMS configuration.
     */

    public void setSmsConfiguration(SmsConfigurationType smsConfiguration) {
        this.smsConfiguration = smsConfiguration;
    }

    /**
     *

     * The SMS configuration.
     *

     *
     * @return The SMS configuration.
     */

    public SmsConfigurationType getSmsConfiguration() {
        return this.smsConfiguration;
    }

    /**
     *

     * The SMS configuration.
     *

     *
     * @param smsConfiguration
     *        The SMS configuration.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withSmsConfiguration(SmsConfigurationType smsConfiguration) {
        setSmsConfiguration(smsConfiguration);
        return this;
    }

    /**
     *

     * The tags that are assigned to the user pool. A tag is a label that you can apply to user pools to categorize and
     * manage them in different ways, such as by purpose, owner, environment, or other criteria.
     *

     *
     * @return The tags that are assigned to the user pool. A tag is a label that you can apply to user pools to
     *         categorize and manage them in different ways, such as by purpose, owner, environment, or other criteria.
     */

    public java.util.Map<String, String> getUserPoolTags() {
        return userPoolTags;
    }

    /**
     *

     * The tags that are assigned to the user pool. A tag is a label that you can apply to user pools to categorize and
     * manage them in different ways, such as by purpose, owner, environment, or other criteria.
     *

     *
     * @param userPoolTags
     *        The tags that are assigned to the user pool. A tag is a label that you can apply to user pools to
     *        categorize and manage them in different ways, such as by purpose, owner, environment, or other criteria.
     */

    public void setUserPoolTags(java.util.Map<String, String> userPoolTags) {
        this.userPoolTags = userPoolTags;
    }

    /**
     *

     * The tags that are assigned to the user pool. A tag is a label that you can apply to user pools to categorize and
     * manage them in different ways, such as by purpose, owner, environment, or other criteria.
     *

     *
     * @param userPoolTags
     *        The tags that are assigned to the user pool. A tag is a label that you can apply to user pools to
     *        categorize and manage them in different ways, such as by purpose, owner, environment, or other criteria.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withUserPoolTags(java.util.Map<String, String> userPoolTags) {
        setUserPoolTags(userPoolTags);
        return this;
    }

    public UserPoolType addUserPoolTagsEntry(String key, String value) {
        if (null == this.userPoolTags) {
            this.userPoolTags = new java.util.HashMap<String, String>();
        }
        if (this.userPoolTags.containsKey(key))
            throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided.");
        this.userPoolTags.put(key, value);
        return this;
    }

    /**
     * Removes all the entries added into UserPoolTags.
     *
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType clearUserPoolTagsEntries() {
        this.userPoolTags = null;
        return this;
    }

    /**
     *

     * The reason why the SMS configuration cannot send the messages to your users.
     *

     *
     * @param smsConfigurationFailure
     *        The reason why the SMS configuration cannot send the messages to your users.
     */

    public void setSmsConfigurationFailure(String smsConfigurationFailure) {
        this.smsConfigurationFailure = smsConfigurationFailure;
    }

    /**
     *

     * The reason why the SMS configuration cannot send the messages to your users.
     *

     *
     * @return The reason why the SMS configuration cannot send the messages to your users.
     */

    public String getSmsConfigurationFailure() {
        return this.smsConfigurationFailure;
    }

    /**
     *

     * The reason why the SMS configuration cannot send the messages to your users.
     *

     *
     * @param smsConfigurationFailure
     *        The reason why the SMS configuration cannot send the messages to your users.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withSmsConfigurationFailure(String smsConfigurationFailure) {
        setSmsConfigurationFailure(smsConfigurationFailure);
        return this;
    }

    /**
     *

     * The reason why the email configuration cannot send the messages to your users.
     *

     *
     * @param emailConfigurationFailure
     *        The reason why the email configuration cannot send the messages to your users.
     */

    public void setEmailConfigurationFailure(String emailConfigurationFailure) {
        this.emailConfigurationFailure = emailConfigurationFailure;
    }

    /**
     *

     * The reason why the email configuration cannot send the messages to your users.
     *

     *
     * @return The reason why the email configuration cannot send the messages to your users.
     */

    public String getEmailConfigurationFailure() {
        return this.emailConfigurationFailure;
    }

    /**
     *

     * The reason why the email configuration cannot send the messages to your users.
     *

     *
     * @param emailConfigurationFailure
     *        The reason why the email configuration cannot send the messages to your users.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withEmailConfigurationFailure(String emailConfigurationFailure) {
        setEmailConfigurationFailure(emailConfigurationFailure);
        return this;
    }

    /**
     *

     * Holds the domain prefix if the user pool has a domain associated with it.
     *

     *
     * @param domain
     *        Holds the domain prefix if the user pool has a domain associated with it.
     */

    public void setDomain(String domain) {
        this.domain = domain;
    }

    /**
     *

     * Holds the domain prefix if the user pool has a domain associated with it.
     *

     *
     * @return Holds the domain prefix if the user pool has a domain associated with it.
     */

    public String getDomain() {
        return this.domain;
    }

    /**
     *

     * Holds the domain prefix if the user pool has a domain associated with it.
     *

     *
     * @param domain
     *        Holds the domain prefix if the user pool has a domain associated with it.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withDomain(String domain) {
        setDomain(domain);
        return this;
    }

    /**
     *

     * A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a custom domain
     * to host the sign-up and sign-in pages for your application. For example: auth.example.com.
     *

     *

     * For more information about adding a custom domain to your user pool, see Using
     * Your Own Domain for the Hosted UI.
     *

     *
     * @param customDomain
     *        A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a custom
     *        domain to host the sign-up and sign-in pages for your application. For example:
     *        auth.example.com.

     *

     *        For more information about adding a custom domain to your user pool, see Using Your Own Domain for the Hosted UI.
     */

    public void setCustomDomain(String customDomain) {
        this.customDomain = customDomain;
    }

    /**
     *

     * A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a custom domain
     * to host the sign-up and sign-in pages for your application. For example: auth.example.com.
     *

     *

     * For more information about adding a custom domain to your user pool, see Using
     * Your Own Domain for the Hosted UI.
     *

     *
     * @return A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a custom
     *         domain to host the sign-up and sign-in pages for your application. For example:
     *         auth.example.com.

     *

     *         For more information about adding a custom domain to your user pool, see Using Your Own Domain for the Hosted UI.
     */

    public String getCustomDomain() {
        return this.customDomain;
    }

    /**
     *

     * A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a custom domain
     * to host the sign-up and sign-in pages for your application. For example: auth.example.com.
     *

     *

     * For more information about adding a custom domain to your user pool, see Using
     * Your Own Domain for the Hosted UI.
     *

     *
     * @param customDomain
     *        A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a custom
     *        domain to host the sign-up and sign-in pages for your application. For example:
     *        auth.example.com.

     *

     *        For more information about adding a custom domain to your user pool, see Using Your Own Domain for the Hosted UI.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withCustomDomain(String customDomain) {
        setCustomDomain(customDomain);
        return this;
    }

    /**
     *

     * The configuration for AdminCreateUser requests.
     *

     *
     * @param adminCreateUserConfig
     *        The configuration for AdminCreateUser requests.
     */

    public void setAdminCreateUserConfig(AdminCreateUserConfigType adminCreateUserConfig) {
        this.adminCreateUserConfig = adminCreateUserConfig;
    }

    /**
     *

     * The configuration for AdminCreateUser requests.
     *

     *
     * @return The configuration for AdminCreateUser requests.
     */

    public AdminCreateUserConfigType getAdminCreateUserConfig() {
        return this.adminCreateUserConfig;
    }

    /**
     *

     * The configuration for AdminCreateUser requests.
     *

     *
     * @param adminCreateUserConfig
     *        The configuration for AdminCreateUser requests.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withAdminCreateUserConfig(AdminCreateUserConfigType adminCreateUserConfig) {
        setAdminCreateUserConfig(adminCreateUserConfig);
        return this;
    }

    /**
     *

     * The user pool add-ons.
     *

     *
     * @param userPoolAddOns
     *        The user pool add-ons.
     */

    public void setUserPoolAddOns(UserPoolAddOnsType userPoolAddOns) {
        this.userPoolAddOns = userPoolAddOns;
    }

    /**
     *

     * The user pool add-ons.
     *

     *
     * @return The user pool add-ons.
     */

    public UserPoolAddOnsType getUserPoolAddOns() {
        return this.userPoolAddOns;
    }

    /**
     *

     * The user pool add-ons.
     *

     *
     * @param userPoolAddOns
     *        The user pool add-ons.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withUserPoolAddOns(UserPoolAddOnsType userPoolAddOns) {
        setUserPoolAddOns(userPoolAddOns);
        return this;
    }

    /**
     *

     * The Amazon Resource Name (ARN) for the user pool.
     *

     *
     * @param arn
     *        The Amazon Resource Name (ARN) for the user pool.
     */

    public void setArn(String arn) {
        this.arn = arn;
    }

    /**
     *

     * The Amazon Resource Name (ARN) for the user pool.
     *

     *
     * @return The Amazon Resource Name (ARN) for the user pool.
     */

    public String getArn() {
        return this.arn;
    }

    /**
     *

     * The Amazon Resource Name (ARN) for the user pool.
     *

     *
     * @param arn
     *        The Amazon Resource Name (ARN) for the user pool.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public UserPoolType withArn(String arn) {
        setArn(arn);
        return this;
    }

    /**
     * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
     * redacted from this string using a placeholder value.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getId() != null)
            sb.append("Id: ").append(getId()).append(",");
        if (getName() != null)
            sb.append("Name: ").append(getName()).append(",");
        if (getPolicies() != null)
            sb.append("Policies: ").append(getPolicies()).append(",");
        if (getLambdaConfig() != null)
            sb.append("LambdaConfig: ").append(getLambdaConfig()).append(",");
        if (getStatus() != null)
            sb.append("Status: ").append(getStatus()).append(",");
        if (getLastModifiedDate() != null)
            sb.append("LastModifiedDate: ").append(getLastModifiedDate()).append(",");
        if (getCreationDate() != null)
            sb.append("CreationDate: ").append(getCreationDate()).append(",");
        if (getSchemaAttributes() != null)
            sb.append("SchemaAttributes: ").append(getSchemaAttributes()).append(",");
        if (getAutoVerifiedAttributes() != null)
            sb.append("AutoVerifiedAttributes: ").append(getAutoVerifiedAttributes()).append(",");
        if (getAliasAttributes() != null)
            sb.append("AliasAttributes: ").append(getAliasAttributes()).append(",");
        if (getUsernameAttributes() != null)
            sb.append("UsernameAttributes: ").append(getUsernameAttributes()).append(",");
        if (getSmsVerificationMessage() != null)
            sb.append("SmsVerificationMessage: ").append(getSmsVerificationMessage()).append(",");
        if (getEmailVerificationMessage() != null)
            sb.append("EmailVerificationMessage: ").append(getEmailVerificationMessage()).append(",");
        if (getEmailVerificationSubject() != null)
            sb.append("EmailVerificationSubject: ").append(getEmailVerificationSubject()).append(",");
        if (getVerificationMessageTemplate() != null)
            sb.append("VerificationMessageTemplate: ").append(getVerificationMessageTemplate()).append(",");
        if (getSmsAuthenticationMessage() != null)
            sb.append("SmsAuthenticationMessage: ").append(getSmsAuthenticationMessage()).append(",");
        if (getMfaConfiguration() != null)
            sb.append("MfaConfiguration: ").append(getMfaConfiguration()).append(",");
        if (getDeviceConfiguration() != null)
            sb.append("DeviceConfiguration: ").append(getDeviceConfiguration()).append(",");
        if (getEstimatedNumberOfUsers() != null)
            sb.append("EstimatedNumberOfUsers: ").append(getEstimatedNumberOfUsers()).append(",");
        if (getEmailConfiguration() != null)
            sb.append("EmailConfiguration: ").append(getEmailConfiguration()).append(",");
        if (getSmsConfiguration() != null)
            sb.append("SmsConfiguration: ").append(getSmsConfiguration()).append(",");
        if (getUserPoolTags() != null)
            sb.append("UserPoolTags: ").append(getUserPoolTags()).append(",");
        if (getSmsConfigurationFailure() != null)
            sb.append("SmsConfigurationFailure: ").append(getSmsConfigurationFailure()).append(",");
        if (getEmailConfigurationFailure() != null)
            sb.append("EmailConfigurationFailure: ").append(getEmailConfigurationFailure()).append(",");
        if (getDomain() != null)
            sb.append("Domain: ").append(getDomain()).append(",");
        if (getCustomDomain() != null)
            sb.append("CustomDomain: ").append(getCustomDomain()).append(",");
        if (getAdminCreateUserConfig() != null)
            sb.append("AdminCreateUserConfig: ").append(getAdminCreateUserConfig()).append(",");
        if (getUserPoolAddOns() != null)
            sb.append("UserPoolAddOns: ").append(getUserPoolAddOns()).append(",");
        if (getArn() != null)
            sb.append("Arn: ").append(getArn());
        sb.append("}");
        return sb.toString();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (obj instanceof UserPoolType == false)
            return false;
        UserPoolType other = (UserPoolType) obj;
        if (other.getId() == null ^ this.getId() == null)
            return false;
        if (other.getId() != null && other.getId().equals(this.getId()) == false)
            return false;
        if (other.getName() == null ^ this.getName() == null)
            return false;
        if (other.getName() != null && other.getName().equals(this.getName()) == false)
            return false;
        if (other.getPolicies() == null ^ this.getPolicies() == null)
            return false;
        if (other.getPolicies() != null && other.getPolicies().equals(this.getPolicies()) == false)
            return false;
        if (other.getLambdaConfig() == null ^ this.getLambdaConfig() == null)
            return false;
        if (other.getLambdaConfig() != null && other.getLambdaConfig().equals(this.getLambdaConfig()) == false)
            return false;
        if (other.getStatus() == null ^ this.getStatus() == null)
            return false;
        if (other.getStatus() != null && other.getStatus().equals(this.getStatus()) == false)
            return false;
        if (other.getLastModifiedDate() == null ^ this.getLastModifiedDate() == null)
            return false;
        if (other.getLastModifiedDate() != null && other.getLastModifiedDate().equals(this.getLastModifiedDate()) == false)
            return false;
        if (other.getCreationDate() == null ^ this.getCreationDate() == null)
            return false;
        if (other.getCreationDate() != null && other.getCreationDate().equals(this.getCreationDate()) == false)
            return false;
        if (other.getSchemaAttributes() == null ^ this.getSchemaAttributes() == null)
            return false;
        if (other.getSchemaAttributes() != null && other.getSchemaAttributes().equals(this.getSchemaAttributes()) == false)
            return false;
        if (other.getAutoVerifiedAttributes() == null ^ this.getAutoVerifiedAttributes() == null)
            return false;
        if (other.getAutoVerifiedAttributes() != null && other.getAutoVerifiedAttributes().equals(this.getAutoVerifiedAttributes()) == false)
            return false;
        if (other.getAliasAttributes() == null ^ this.getAliasAttributes() == null)
            return false;
        if (other.getAliasAttributes() != null && other.getAliasAttributes().equals(this.getAliasAttributes()) == false)
            return false;
        if (other.getUsernameAttributes() == null ^ this.getUsernameAttributes() == null)
            return false;
        if (other.getUsernameAttributes() != null && other.getUsernameAttributes().equals(this.getUsernameAttributes()) == false)
            return false;
        if (other.getSmsVerificationMessage() == null ^ this.getSmsVerificationMessage() == null)
            return false;
        if (other.getSmsVerificationMessage() != null && other.getSmsVerificationMessage().equals(this.getSmsVerificationMessage()) == false)
            return false;
        if (other.getEmailVerificationMessage() == null ^ this.getEmailVerificationMessage() == null)
            return false;
        if (other.getEmailVerificationMessage() != null && other.getEmailVerificationMessage().equals(this.getEmailVerificationMessage()) == false)
            return false;
        if (other.getEmailVerificationSubject() == null ^ this.getEmailVerificationSubject() == null)
            return false;
        if (other.getEmailVerificationSubject() != null && other.getEmailVerificationSubject().equals(this.getEmailVerificationSubject()) == false)
            return false;
        if (other.getVerificationMessageTemplate() == null ^ this.getVerificationMessageTemplate() == null)
            return false;
        if (other.getVerificationMessageTemplate() != null && other.getVerificationMessageTemplate().equals(this.getVerificationMessageTemplate()) == false)
            return false;
        if (other.getSmsAuthenticationMessage() == null ^ this.getSmsAuthenticationMessage() == null)
            return false;
        if (other.getSmsAuthenticationMessage() != null && other.getSmsAuthenticationMessage().equals(this.getSmsAuthenticationMessage()) == false)
            return false;
        if (other.getMfaConfiguration() == null ^ this.getMfaConfiguration() == null)
            return false;
        if (other.getMfaConfiguration() != null && other.getMfaConfiguration().equals(this.getMfaConfiguration()) == false)
            return false;
        if (other.getDeviceConfiguration() == null ^ this.getDeviceConfiguration() == null)
            return false;
        if (other.getDeviceConfiguration() != null && other.getDeviceConfiguration().equals(this.getDeviceConfiguration()) == false)
            return false;
        if (other.getEstimatedNumberOfUsers() == null ^ this.getEstimatedNumberOfUsers() == null)
            return false;
        if (other.getEstimatedNumberOfUsers() != null && other.getEstimatedNumberOfUsers().equals(this.getEstimatedNumberOfUsers()) == false)
            return false;
        if (other.getEmailConfiguration() == null ^ this.getEmailConfiguration() == null)
            return false;
        if (other.getEmailConfiguration() != null && other.getEmailConfiguration().equals(this.getEmailConfiguration()) == false)
            return false;
        if (other.getSmsConfiguration() == null ^ this.getSmsConfiguration() == null)
            return false;
        if (other.getSmsConfiguration() != null && other.getSmsConfiguration().equals(this.getSmsConfiguration()) == false)
            return false;
        if (other.getUserPoolTags() == null ^ this.getUserPoolTags() == null)
            return false;
        if (other.getUserPoolTags() != null && other.getUserPoolTags().equals(this.getUserPoolTags()) == false)
            return false;
        if (other.getSmsConfigurationFailure() == null ^ this.getSmsConfigurationFailure() == null)
            return false;
        if (other.getSmsConfigurationFailure() != null && other.getSmsConfigurationFailure().equals(this.getSmsConfigurationFailure()) == false)
            return false;
        if (other.getEmailConfigurationFailure() == null ^ this.getEmailConfigurationFailure() == null)
            return false;
        if (other.getEmailConfigurationFailure() != null && other.getEmailConfigurationFailure().equals(this.getEmailConfigurationFailure()) == false)
            return false;
        if (other.getDomain() == null ^ this.getDomain() == null)
            return false;
        if (other.getDomain() != null && other.getDomain().equals(this.getDomain()) == false)
            return false;
        if (other.getCustomDomain() == null ^ this.getCustomDomain() == null)
            return false;
        if (other.getCustomDomain() != null && other.getCustomDomain().equals(this.getCustomDomain()) == false)
            return false;
        if (other.getAdminCreateUserConfig() == null ^ this.getAdminCreateUserConfig() == null)
            return false;
        if (other.getAdminCreateUserConfig() != null && other.getAdminCreateUserConfig().equals(this.getAdminCreateUserConfig()) == false)
            return false;
        if (other.getUserPoolAddOns() == null ^ this.getUserPoolAddOns() == null)
            return false;
        if (other.getUserPoolAddOns() != null && other.getUserPoolAddOns().equals(this.getUserPoolAddOns()) == false)
            return false;
        if (other.getArn() == null ^ this.getArn() == null)
            return false;
        if (other.getArn() != null && other.getArn().equals(this.getArn()) == false)
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;

        hashCode = prime * hashCode + ((getId() == null) ? 0 : getId().hashCode());
        hashCode = prime * hashCode + ((getName() == null) ? 0 : getName().hashCode());
        hashCode = prime * hashCode + ((getPolicies() == null) ? 0 : getPolicies().hashCode());
        hashCode = prime * hashCode + ((getLambdaConfig() == null) ? 0 : getLambdaConfig().hashCode());
        hashCode = prime * hashCode + ((getStatus() == null) ? 0 : getStatus().hashCode());
        hashCode = prime * hashCode + ((getLastModifiedDate() == null) ? 0 : getLastModifiedDate().hashCode());
        hashCode = prime * hashCode + ((getCreationDate() == null) ? 0 : getCreationDate().hashCode());
        hashCode = prime * hashCode + ((getSchemaAttributes() == null) ? 0 : getSchemaAttributes().hashCode());
        hashCode = prime * hashCode + ((getAutoVerifiedAttributes() == null) ? 0 : getAutoVerifiedAttributes().hashCode());
        hashCode = prime * hashCode + ((getAliasAttributes() == null) ? 0 : getAliasAttributes().hashCode());
        hashCode = prime * hashCode + ((getUsernameAttributes() == null) ? 0 : getUsernameAttributes().hashCode());
        hashCode = prime * hashCode + ((getSmsVerificationMessage() == null) ? 0 : getSmsVerificationMessage().hashCode());
        hashCode = prime * hashCode + ((getEmailVerificationMessage() == null) ? 0 : getEmailVerificationMessage().hashCode());
        hashCode = prime * hashCode + ((getEmailVerificationSubject() == null) ? 0 : getEmailVerificationSubject().hashCode());
        hashCode = prime * hashCode + ((getVerificationMessageTemplate() == null) ? 0 : getVerificationMessageTemplate().hashCode());
        hashCode = prime * hashCode + ((getSmsAuthenticationMessage() == null) ? 0 : getSmsAuthenticationMessage().hashCode());
        hashCode = prime * hashCode + ((getMfaConfiguration() == null) ? 0 : getMfaConfiguration().hashCode());
        hashCode = prime * hashCode + ((getDeviceConfiguration() == null) ? 0 : getDeviceConfiguration().hashCode());
        hashCode = prime * hashCode + ((getEstimatedNumberOfUsers() == null) ? 0 : getEstimatedNumberOfUsers().hashCode());
        hashCode = prime * hashCode + ((getEmailConfiguration() == null) ? 0 : getEmailConfiguration().hashCode());
        hashCode = prime * hashCode + ((getSmsConfiguration() == null) ? 0 : getSmsConfiguration().hashCode());
        hashCode = prime * hashCode + ((getUserPoolTags() == null) ? 0 : getUserPoolTags().hashCode());
        hashCode = prime * hashCode + ((getSmsConfigurationFailure() == null) ? 0 : getSmsConfigurationFailure().hashCode());
        hashCode = prime * hashCode + ((getEmailConfigurationFailure() == null) ? 0 : getEmailConfigurationFailure().hashCode());
        hashCode = prime * hashCode + ((getDomain() == null) ? 0 : getDomain().hashCode());
        hashCode = prime * hashCode + ((getCustomDomain() == null) ? 0 : getCustomDomain().hashCode());
        hashCode = prime * hashCode + ((getAdminCreateUserConfig() == null) ? 0 : getAdminCreateUserConfig().hashCode());
        hashCode = prime * hashCode + ((getUserPoolAddOns() == null) ? 0 : getUserPoolAddOns().hashCode());
        hashCode = prime * hashCode + ((getArn() == null) ? 0 : getArn().hashCode());
        return hashCode;
    }

    @Override
    public UserPoolType clone() {
        try {
            return (UserPoolType) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }

    @com.amazonaws.annotation.SdkInternalApi
    @Override
    public void marshall(ProtocolMarshaller protocolMarshaller) {
        com.amazonaws.services.cognitoidp.model.transform.UserPoolTypeMarshaller.getInstance().marshall(this, protocolMarshaller);
    }
}


text:
'use strict';

/**
 * Properties describing exposure level of the image.
 *
 */
class ExposureProperties {
  /**
   * Create a ExposureProperties.
   * @member {string} [exposureLevel] An enum value indicating level of
   * exposure. Possible values include: 'UnderExposure', 'GoodExposure',
   * 'OverExposure'
   * @member {number} [value] A number indicating level of exposure level
   * ranging from 0 to 1. [0, 0.25) is under exposure. [0.25, 0.75) is good
   * exposure. [0.75, 1] is over exposure.
   */
  constructor() {
  }

  /**
   * Defines the metadata of ExposureProperties
   *
   * @returns {object} metadata of ExposureProperties
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'ExposureProperties',
      type: {
        name: 'Composite',
        className: 'ExposureProperties',
        modelProperties: {
          exposureLevel: {
            required: false,
            serializedName: 'exposureLevel',
            type: {
              name: 'Enum',
              allowedValues: [ 'UnderExposure', 'GoodExposure', 'OverExposure' ]
            }
          },
          value: {
            required: false,
            serializedName: 'value',
            constraints: {
              InclusiveMaximum: 1,
              InclusiveMinimum: 0
            },
            type: {
              name: 'Number'
            }
          }
        }
      }
    };
  }
}

module.exports = ExposureProperties;

redpajama_set_name: RedPajamaGithub


text:
<?php

class PDOWrapper
{
    private static $instance;

    /**
     * Constructor.
     * Note:
     *   This function is set to private in order to prevent others from calling this function. Only this class itself can call this function.
     *   You can find an other example(in Japanese) at http://d.hatena.ne.jp/ja9/20090515/1242374821
     *
     * @param String $dsn      dsn string to connect database
     * @param String $username username to connect
     * @param String $password password to connect
     */
    private function __construct( $dsn, $username, $password )
    {
        self::$instance = new PDO($dsn, $username, $password);
    }

    /**
     * Retrive the only instance of this class.
     *
     * @param String $dsn      dsn string to connect database
     * @param String $username username to connect
     * @param String $password password to connect
     * @return Object Instance of this class
     */
    public static function getInstance( $dsn=null, $username=null, $password=null)
    {
        if (is_null(self::$instance)) {
            new self( $dsn, $username, $password );
        }
        return self::$instance;
    }

}


text:
- [Sparkfun Inventor's Kit](https://www.sparkfun.com/products/11022)

# Parts

## Adafruit

- [Motor Shield](http://www.adafruit.com/products/81)
- [MaxSonar](https://www.adafruit.com/products/172)
- [Bumper Switch](https://www.adafruit.com/products/818)

## Amazon

- [Futuba Servo](http://www.amazon.com/Futaba-S3003-Servo-Standard/dp/B0015H2V72/ref=sr_1_1?s=toys-and-games&ie=UTF8&qid=1345046435&sr=1-1&keywords=futaba+servo)
- [Hitec HS322HD Servo](http://www.amazon.com/Hitec-33322S-HS-322HD-Standard-Karbonite/dp/B0006O3XEA/ref=sr_1_cc_2?s=aps&ie=UTF8&qid=1345046396&sr=1-2-catcorr&keywords=hitec+servo)
- [OSEPP I2C Expansion Shield](http://www.amazon.com/OSEPP-Expansion-Schield-Arduino-Compatible/dp/B007JBUL0C/ref=sr_1_10?s=electronics&ie=UTF8&qid=1345046344&sr=1-10&keywords=i2c+shield)
- [SainSmart Sensor Shield](http://www.amazon.com/SainSmart-Sensor-Digital-Arduino-Duemilanove/dp/B006TQ314G)

## DFRobot

- [Analog Slide Position Sensor](http://www.dfrobot.com/index.php?route=product/product&filter_name=slide&product_id=131)
- [I2C/TWI LCD1602 Module](http://www.dfrobot.com/index.php?route=product/product&filter_name=i2c/twi&product_id=135)
- [DFRobot LG-NS Gripper](http://www.dfrobot.com/index.php?route=product/product&filter_name=gripper&product_id=628#.UCvGymNST_k)

## Makershed

- [Getting Started with Arduino](http://www.makershed.com/Getting_Started_with_Arduino_Kit_V3_0_p/msgsa.htm)
- [Ultimate Microcontroller Pack](http://www.makershed.com/Ultimate_Microcontroller_Pack_p/msump.htm)

## Maxbotix

- **[XL-MaxSonar EZ/AE (MB1230)](http://www.maxbotix.com/products/XL-EZ.htm)**
- [LV-MaxSonar EZ1 (MB1230)](http://www.maxbotix.com/products/LV.htm)

## Parallax

- **[Robot Base](http://www.parallax.com/Store/Education/KitsandBoards/tabid/182/ProductID/820/List/0/Default.aspx?SortField=ProductName,ProductName)**
- [2 Axis Joystick](http://www.parallax.com/Store/Sensors/PressureFlexRPM/tabid/177/ProductID/581/List/0/Default.aspx?SortField=ProductName,ProductName)
- [5 Position Switch](http://www.parallax.com/Store/Sensors/PressureFlexRPM/tabid/177/ProductID/615/List/0/Default.aspx?SortField=ProductName,ProductName)
- [Gripper Kit](http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/clamp/List/0/SortField/4/ProductID/311/Default.aspx)
- [PMB-648 GPS SiRF Internal Antenna](http://www.parallax.com/Store/Microcontrollers/BASICStampModules/tabid/134/txtSearch/gps/List/1/ProductID/644/Default.aspx?SortField=ProductName%2cProductName)
- [Ping)))](http://www.parallax.com/Store/Sensors/ObjectDetection/tabid/176/ProductID/92/List/0/Default.aspx?SortField=ProductName,ProductName)
- [PIR](http://www.parallax.com/Store/Sensors/ObjectDetection/tabid/176/ProductID/83/List/0/Default.aspx?SortField=ProductName,ProductName)
- [Standard Servo](http://www.parallax.com/Store/Accessories/MotorServos/tabid/163/ProductID/101/List/0/Default.aspx?SortField=ProductName,ProductName)
- [Continuous Servo](http://www.parallax.com/Store/Robots/RoboticComponents/tabid/198/List/0/ProductID/102/Default.aspx?SortField=ProductName%2cProductName)
- [Tank Tread Kit](http://www.parallax.com/Store/Robots/RoboticAccessories/tabid/145/ProductID/78/List/0/Default.aspx?SortField=ProductName,ProductName)

## Sparkfun

- [Arcade Joystick](http://www.sparkfun.com/products/9136)
- [Laser Card Module - Red](http://www.sparkfun.com/products/594)
- [Pan/Tilt Bracket](http://www.sparkfun.com/products/10335)
- [Robotic Claw](http://www.sparkfun.com/products/10332)
- [Robotic Claw Pan/Tilt Bracket](http://www.sparkfun.com/products/10826)
- [Servo Extension Cable - Female to Female (shrouded)](http://www.sparkfun.com/products/8738)
- [Servo Cable - Female to Female](http://www.sparkfun.com/products/9187)
- [Servo - Medium](http://www.sparkfun.com/products/10333)
- [Servo - Medium Full Rotation](http://www.sparkfun.com/products/10189)
- [Servo - Small](http://www.sparkfun.com/products/9065)
- [SoftPot Membrane - 50mm](http://www.sparkfun.com/products/8680)
- [Triple Axis Magnometer/Compass HMC5883L](https://www.sparkfun.com/products/10530)
- [Wiper/Actuator - 1N to 3N Force](http://www.sparkfun.com/products/9075)

# Tools

- [LadyAda's Toolkit](https://www.adafruit.com/products/136) (I don't have this, but it's basically the same as all of the tools I have)
- [Panavise Vaccuum Base stand](http://www.amazon.com/PanaVise-209-Vacuum-Base-Jr/dp/B000CONJUM/ref=sr_1_3?ie=UTF8&qid=1345046483&sr=8-3&keywords=panavise)
- [Panavise Junior](http://www.amazon.com/PanaVise-Model-201-Junior-Miniature/dp/B000B61D22/ref=sr_1_1?ie=UTF8&qid=1345046483&sr=8-1&keywords=panavise)


text:
<?php

namespace CLMVC\Core;

/**
 * Class Option.
 */
class Option
{
    private $key;
    private $defaultValue;
    private $value = null;
    private $type;

    public function __construct($key = '', $defaultValue = '', $type = 'string')
    {
        if ($key) {
            $this->setKey($key);
            $this->setDefaultValue($defaultValue);
            $this->setType($type);
        }
    }
    /**
     * @param string $key
     * @param string $defaultValue
     * @param string $type
     *
     * @return Option
     */
    public static function create($key = '', $defaultValue = '', $type = 'string')
    {
        $option = new self($key, $defaultValue, $type);

        return $option;
    }

    /**
     * Set the option key.
     *
     * @param $key
     */
    public function setKey($key)
    {
        $this->key = $key;
    }

    /**
     * Set the options default value.
     *
     * @param $defaultValue
     */
    public function setDefaultValue($defaultValue)
    {
        if (!isset($this->value)) {
            $this->value = $defaultValue;
        }
        $this->defaultValue = $defaultValue;
    }

    /**
     * Returns the option key.
     *
     * @return mixed
     */
    public function getKey()
    {
        return $this->key;
    }

    /**
     * Returns the option value.
     *
     * @return mixed
     */
    public function getValue()
    {
        return $this->value;
    }

    /**
     * Returns the options default value.
     *
     * @return mixed
     */
    public function getDefaultValue()
    {
        return $this->defaultValue;
    }

    /**
     * Set the option value.
     *
     * @param $value
     */
    public function setValue($value)
    {
        $this->value = $value;
    }

    /**
     * Resets the value for option.
     */
    public function reset()
    {
        return $this->value = $this->getDefaultValue();
    }

    /**
     * Get the option type.
     *
     * @return string
     */
    public function getType()
    {
        return $this->type;
    }

    /**
     * Set the option type.
     *
     * @param $type
     */
    public function setType($type)
    {
        $this->type = $type;
    }

    /**
     * Checks if option is empty.
     *
     * @return bool
     */
    public function isEmpty()
    {
        return empty($this->value);
    }
}


text:
package github

import (
	"context"
	"fmt"
)

// Tree represents a GitHub tree.
type Tree struct {
	SHA     *string     `json:"sha,omitempty"`
	Entries []TreeEntry `json:"tree,omitempty"`
}

func (t Tree) String() string {
	return Stringify(t)
}

// TreeEntry represents the contents of a tree structure. TreeEntry can
// represent either a blob, a commit (in the case of a submodule), or another
// tree.
type TreeEntry struct {
	SHA     *string `json:"sha,omitempty"`
	Path    *string `json:"path,omitempty"`
	Mode    *string `json:"mode,omitempty"`
	Type    *string `json:"type,omitempty"`
	Size    *int    `json:"size,omitempty"`
	Content *string `json:"content,omitempty"`
	URL     *string `json:"url,omitempty"`
}

func (t TreeEntry) String() string {
	return Stringify(t)
}

// GetTree fetches the Tree object for a given sha hash from a repository.
//
// GitHub API docs: https://developer.github.com/v3/git/trees/#get-a-tree
func (s *GitService) GetTree(ctx context.Context, owner string, repo string, sha string, recursive bool) (*Tree, *Response, error) {
	u := fmt.Sprintf("repos/%v/%v/git/trees/%v", owner, repo, sha)
	if recursive {
		u += "?recursive=1"
	}

	req, err := s.client.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}

	t := new(Tree)
	resp, err := s.client.Do(ctx, req, t)
	if err != nil {
		return nil, resp, err
	}

	return t, resp, nil
}

// createTree represents the body of a CreateTree request.
type createTree struct {
	BaseTree string      `json:"base_tree,omitempty"`
	Entries  []TreeEntry `json:"tree"`
}

// CreateTree creates a new tree in a repository. If both a tree and a nested
// path modifying that tree are specified, it will overwrite the contents of
// that tree with the new path contents and write a new tree out.
//
// GitHub API docs: https://developer.github.com/v3/git/trees/#create-a-tree
func (s *GitService) CreateTree(ctx context.Context, owner string, repo string, baseTree string, entries []TreeEntry) (*Tree, *Response, error) {
	u := fmt.Sprintf("repos/%v/%v/git/trees", owner, repo)

	body := &createTree{
		BaseTree: baseTree,
		Entries:  entries,
	}
	req, err := s.client.NewRequest("POST", u, body)
	if err != nil {
		return nil, nil, err
	}

	t := new(Tree)
	resp, err := s.client.Do(ctx, req, t)
	if err != nil {
		return nil, resp, err
	}

	return t, resp, nil
}


text:
namespace dbus {
class Bus;
}

namespace chromeos {

// CrasAudioClient is used to communicate with the cras audio dbus interface.
class COMPONENT_EXPORT(DBUS_AUDIO) CrasAudioClient {
 public:
  // Interface for observing changes from the cras audio changes.
  class Observer {
   public:
    // Called when cras audio client starts or re-starts, which happens when
    // cros device powers up or restarted.
    virtual void AudioClientRestarted();

    // Called when audio output mute state changed to new state of |mute_on|.
    virtual void OutputMuteChanged(bool mute_on);

    // Called when audio input mute state changed to new state of |mute_on|.
    virtual void InputMuteChanged(bool mute_on);

    // Called when audio nodes change.
    virtual void NodesChanged();

    // Called when active audio output node changed to new node with |node_id|.
    virtual void ActiveOutputNodeChanged(uint64_t node_id);

    // Called when active audio input node changed to new node with |node_id|.
    virtual void ActiveInputNodeChanged(uint64_t node_id);

    // Called when output node's volume changed.
    virtual void OutputNodeVolumeChanged(uint64_t node_id, int volume);

    // Called when hotword is triggered.
    virtual void HotwordTriggered(uint64_t tv_sec, uint64_t tv_nsec);

    // Called when the number of active output streams has changed.
    virtual void NumberOfActiveStreamsChanged();

    // Called when the battery level for a Bluetooth headset changed.
    virtual void BluetoothBatteryChanged(const std::string& address,
                                         uint32_t level);

   protected:
    virtual ~Observer();
  };

  // Creates and initializes the global instance. |bus| must not be null.
  static void Initialize(dbus::Bus* bus);

  // Creates and initializes a fake global instance if not already created.
  static void InitializeFake();

  // Destroys the global instance which must have been initialized.
  static void Shutdown();

  // Returns the global instance if initialized. May return null.
  static CrasAudioClient* Get();

  // Adds and removes the observer.
  virtual void AddObserver(Observer* observer) = 0;
  virtual void RemoveObserver(Observer* observer) = 0;
  // Returns true if this object has the given observer.
  virtual bool HasObserver(const Observer* observer) const = 0;

  // Gets the volume state, asynchronously.
  virtual void GetVolumeState(DBusMethodCallback<VolumeState> callback) = 0;

  // Gets the default output buffer size in frames.
  virtual void GetDefaultOutputBufferSize(DBusMethodCallback<int> callback) = 0;

  // Gets if system AEC is supported.
  virtual void GetSystemAecSupported(DBusMethodCallback<bool> callback) = 0;

  // Gets any available group ID for the system AEC
  virtual void GetSystemAecGroupId(DBusMethodCallback<int32_t> callback) = 0;

  // Gets an array of audio input and output nodes.
  virtual void GetNodes(DBusMethodCallback<AudioNodeList> callback) = 0;

  // Gets the number of active output streams.
  virtual void GetNumberOfActiveOutputStreams(
      DBusMethodCallback<int> callback) = 0;

  // Sets output volume of the given |node_id| to |volume|, in the rage of
  // [0, 100].
  virtual void SetOutputNodeVolume(uint64_t node_id, int32_t volume) = 0;

  // Sets output mute from user action.
  virtual void SetOutputUserMute(bool mute_on) = 0;

  // Sets input gain of the given |node_id| to |gain|, in the range of
  // [0, 100].
  virtual void SetInputNodeGain(uint64_t node_id, int32_t gain) = 0;

  // Sets input mute state to |mute_on| value.
  virtual void SetInputMute(bool mute_on) = 0;

  // Sets the active output node to |node_id|.
  virtual void SetActiveOutputNode(uint64_t node_id) = 0;

  // Sets the primary active input node to |node_id|.
  virtual void SetActiveInputNode(uint64_t node_id) = 0;

  // Sets |hotword_model| for the given |node_id|.
  // |hotword_model| is expected to be in format <language>_<region> with lower
  // cases. E.g., "en_us".
  // The callback will receive a boolean which indicates if the hotword model is
  // successfully set.
  virtual void SetHotwordModel(uint64_t node_id,
                               const std::string& hotword_model,
                               VoidDBusMethodCallback callback) = 0;

  // Enables or disables the usage of fixed A2DP packet size in CRAS.
  virtual void SetFixA2dpPacketSize(bool enabled) = 0;
  // Enables or disables the next Handsfree profile next version in CRAS.
  virtual void SetNextHandsfreeProfile(bool enabled) = 0;

  // Adds input node |node_id| to the active input list. This is used to add
  // an additional active input node besides the one set by SetActiveInputNode.
  // Note that this action will not trigger an ActiveInputNodeChanged event and
  // nothing will happen if the |node_id| has already been set as active.
  virtual void AddActiveInputNode(uint64_t node_id) = 0;

  // Removes input node |node_id| from the active input list. This is used for
  // removing an active input node added by AddActiveInputNode.
  virtual void RemoveActiveInputNode(uint64_t node_id) = 0;

  // Adds input node |node_id| to the active outputs list. This is used to add
  // an additional active output node besides the one set by SetActiveInputNode.
  // Note that this action will not trigger an ActiveOutputNodeChanged event
  // and nothing will happen if the |node_id| has already been set as active.
  virtual void AddActiveOutputNode(uint64_t node_id) = 0;

  // Removes output node |node_id| from the active output list. This is used for
  // removing an active output node added by AddActiveOutputNode.
  virtual void RemoveActiveOutputNode(uint64_t node_id) = 0;

  // Swaps the left and right channel of the primary active output device.
  // Swap the left and right channel if |swap| is true; otherwise, swap the left
  // and right channel back to the normal mode.
  // The dbus message will be dropped if this feature is not supported on the
  // |node_id|.
  virtual void SwapLeftRight(uint64_t node_id, bool swap) = 0;

  virtual void SetGlobalOutputChannelRemix(
      int32_t channels,
      const std::vector<double>& mixer) = 0;

  // Sets the player playback status. Possible status are "Playing", "Paused" or
  // "Stopped".
  virtual void SetPlayerPlaybackStatus(const std::string& playback_status) = 0;

  // Sets the player identity. Identity is a human readable title for the source
  // of the media player. This could be the name of the app or the name of the
  // site playing media.
  virtual void SetPlayerIdentity(const std::string& playback_identity) = 0;

  // Sets the current track position for the player in microseconds
  virtual void SetPlayerPosition(const int64_t& position) = 0;

  // Sets the current track duration for the player in microseconds
  virtual void SetPlayerDuration(const int64_t& duration) = 0;

  // Sets the current media metadata including Title, Album, and Artist.
  virtual void SetPlayerMetadata(
      const std::map<std::string, std::string>& metadata) = 0;

  // Runs the callback as soon as the service becomes available.
  virtual void WaitForServiceToBeAvailable(
      WaitForServiceToBeAvailableCallback callback) = 0;

 protected:
  friend class CrasAudioClientTest;

  CrasAudioClient();
  virtual ~CrasAudioClient();

 private:
  DISALLOW_COPY_AND_ASSIGN(CrasAudioClient);
};

}  // namespace chromeos

#endif  // CHROMEOS_DBUS_AUDIO_CRAS_AUDIO_CLIENT_H_


text:
			Show:
			<select class="form-control" style="width:200px">
				<option>All Datasets</option>
				<option>My Datasets</option>
			</select>

			<button name="new" class="btn btn-primary" [routerLink]="['/query']">New Dataset</button>

		<ag-grid-angular #agGrid style="width: 100%; height: 100%;" class="ag-fresh"
				[gridOptions]="gridOptions"
				>
		</ag-grid-angular>


text:
use std::collections::HashMap;
use std::net::{TcpListener, TcpStream, SocketAddr};
use std::io::Read;
use std::io;
use std::process;
use std::os::unix::io::{RawFd, AsRawFd};
use select::FdSet;
use child::PersistentChild;

pub struct FdStore {
    // the listening server socket
    srv_sock: TcpListener,

    // the connected remote clients
    pub clients: HashMap<RawFd, TcpStream>, //connected clients

    pub child: PersistentChild,

    // private auxiliary data
    all_fdset: FdSet,
}

impl FdStore {
    pub fn new(srv_sock: TcpListener, child: PersistentChild) -> Self {
        let srv_fd = srv_sock.as_raw_fd(); // not consumed
        let mut s = FdStore {srv_sock: srv_sock, clients: HashMap::new(), child: child, all_fdset: FdSet::new()};
        println!("inserting srv fd {}", srv_fd);
        s.all_fdset.insert(srv_fd);
        for fd in [s.child.child.stdout.as_ref().unwrap().as_raw_fd(), s.child.child.stderr.as_ref().unwrap().as_raw_fd()].iter() {
            println!("inserting child fd {}", fd);
            s.all_fdset.insert(*fd);
        };
        s
    }

    pub fn add_client(&mut self, client: TcpStream) {
        let stream_fd: RawFd = client.as_raw_fd(); //not consume
        println!("inserted fd {}", stream_fd);
        self.clients.insert(stream_fd, client);
        self.all_fdset.insert(stream_fd);
    }

    pub fn del_client(&mut self, client_fd: RawFd) {
        println!("removing fd {}", client_fd);
        assert!(self.clients.contains_key(&client_fd));
        assert!(self.all_fdset.contains(client_fd));
        self.all_fdset.remove(client_fd);
        self.clients.remove(&client_fd);
    }

    pub fn select(&mut self,
                  srv_ready: &Fn(OnceAccept, &Self) -> io::Result<TcpStream>,
                  remote_ready: &Fn(OnceRead<TcpStream>, &mut process::ChildStdin) -> bool,
                  child_stdout_ready: &Fn(OnceRead<process::ChildStdout>, &HashMap<RawFd, TcpStream>) -> (),
                  child_stderr_ready: &Fn(OnceRead<process::ChildStderr>, &HashMap<RawFd, TcpStream>) -> (),
                  ) -> () {
        let readfds = self.all_fdset.readfds_select();

        for fd in readfds {
            if fd == self.srv_sock.as_raw_fd() {
                // server socket wants to accept new connection
                match srv_ready(OnceAccept{ listener: &self.srv_sock}, self) {
                  Err(e) => println!("not accepting? {:?}", e),
                  Ok(stream) => {
                      println!("adding new client");
                      self.add_client(stream);
                  }
                };
            } else if self.child.is_stdout(fd) {
                child_stdout_ready(OnceRead{ r: self.child.stdout_as_mut() }, &self.clients);
            } else if self.child.is_stderr(fd) {
                child_stderr_ready(OnceRead{ r: self.child.stderr_as_mut() }, &self.clients);
            } else if self.clients.contains_key(&fd){
                // client connection demands attention
                let cont = {
                    let stream: &mut TcpStream = self.clients.get_mut(&fd).unwrap();
                    let r = OnceRead { r: stream };
                    remote_ready(r, self.child.stdin_as_mut())
                };
                if !cont {
                    println!("client exited");
                    self.del_client(fd);
                }
            } else {
                assert!(false, "unknown fd");
            }
        }
    }
}

pub struct OnceAccept<'a>{ listener: &'a TcpListener }
pub struct OnceRead<'a, T: Read + 'a>{ r: &'a mut T }

impl <'a>OnceAccept<'a> {
    pub fn do_accept(self) -> io::Result<(TcpStream, SocketAddr)> {
        self.listener.accept()
    }
}

impl <'a, T: Read>OnceRead<'a, T> {
    pub fn do_read(self, buf: &mut [u8]) -> io::Result<usize> {
        self.r.read(buf)
    }
}


text:
using System;
using System.Collections.Generic;
using Tup.Cobar4Net.Parser.Visitor;

namespace Tup.Cobar4Net.Parser.Ast.Expression
{
    /// <author>
    ///     QIU Shuo
    /// </author>
    public interface IExpression : IAstNode
    {
        /// <value>
        ///     precedences are defined in
        ///     <see cref="IExpression" />
        /// </value>
        int Precedence { get; }

        /// <returns>this</returns>
        IExpression SetCacheEvalRst(bool cacheEvalRst);

        object Evaluation(IDictionary<object, object> parameters);
    }

    ///
    ///     Expression Constants
    ///
    public static class ExpressionConstants
    {
        public static readonly int PrecedenceQuery = 0;

        public static readonly int PrecedenceAssignment = 1;

        public static readonly int PrecedenceLogicalOr = 2;

        public static readonly int PrecedenceLogicalXor = 3;

        public static readonly int PrecedenceLogicalAnd = 4;

        public static readonly int PrecedenceLogicalNot = 5;

        public static readonly int PrecedenceBetweenAnd = 6;

        public static readonly int PrecedenceComparision = 7;

        public static readonly int PrecedenceAnyAllSubquery = 8;

        public static readonly int PrecedenceBitOr = 8;

        public static readonly int PrecedenceBitAnd = 10;

        public static readonly int PrecedenceBitShift = 11;

        public static readonly int PrecedenceArithmeticTermOp = 12;

        public static readonly int PrecedenceArithmeticFactorOp = 13;

        public static readonly int PrecedenceBitXor = 14;

        public static readonly int PrecedenceUnaryOp = 15;

        public static readonly int PrecedenceBinary = 16;

        public static readonly int PrecedenceCollate = 17;

        public static readonly int PrecedencePrimary = 19;

        public static readonly object Unevaluatable = new UnevaluatableExpression();

        #region ExpressionConstants.Unevaluatable

        ///
        ///     ExpressionConstants.Unevaluatable Expression
        ///
        private class UnevaluatableExpression : AbstractExpression
        {
            public override int Precedence
            {
                get { throw new NotSupportedException(); }
            }

            public override void Accept(ISqlAstVisitor visitor)
            {
                throw new NotSupportedException();
            }

            protected override object EvaluationInternal(IDictionary<object, object> parameters)
            {
                throw new NotSupportedException();
            }
        }

        #endregion ExpressionConstants.Unevaluatable
    }
}


text:
#include "src/core/tsi/gts_transport_security.h"

#include <string.h>

static gts_shared_resource g_gts_resource;

gts_shared_resource* gts_get_shared_resource(void) { return &g_gts_resource; }

extern "C" void grpc_tsi_gts_init() {
  memset(&g_gts_resource, 0, sizeof(gts_shared_resource));
  gpr_mu_init(&g_gts_resource.mu);
}

extern "C" void grpc_tsi_gts_shutdown() {
  gpr_mu_destroy(&g_gts_resource.mu);
  if (g_gts_resource.cq == nullptr) {
    return;
  }
  grpc_completion_queue_destroy(g_gts_resource.cq);
  grpc_channel_destroy(g_gts_resource.channel);
  gpr_thd_join(g_gts_resource.thread_id);
}


text:
\hypertarget{structtesting_1_1gmock__matchers__test_1_1_referencing_functor}{}\section{testing\+:\+:gmock\+\_\+matchers\+\_\+test\+:\+:Referencing\+Functor Struct Reference}
\label{structtesting_1_1gmock__matchers__test_1_1_referencing_functor}\index{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor@{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor}}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item
typedef const int $\ast$ \hyperlink{structtesting_1_1gmock__matchers__test_1_1_referencing_functor_a5856a8175e2f797a6733a363b2834094}{result\+\_\+type}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\hyperlink{structtesting_1_1gmock__matchers__test_1_1_referencing_functor_a5856a8175e2f797a6733a363b2834094}{result\+\_\+type} \hyperlink{structtesting_1_1gmock__matchers__test_1_1_referencing_functor_a149f15ed9afbff28f5c3639c0f3eb255}{operator()} (const int \&n)
\end{DoxyCompactItemize}

\subsection{Detailed Description}

Definition at line 3946 of file gmock-\/matchers\+\_\+test.\+cc.

\subsection{Member Typedef Documentation}
\index{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor@{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor}!result\+\_\+type@{result\+\_\+type}}
\index{result\+\_\+type@{result\+\_\+type}!testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor@{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor}}
\subsubsection[{\texorpdfstring{result\+\_\+type}{result_type}}]{\setlength{\rightskip}{0pt plus 5cm}typedef const int$\ast$ {\bf testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor\+::result\+\_\+type}}\hypertarget{structtesting_1_1gmock__matchers__test_1_1_referencing_functor_a5856a8175e2f797a6733a363b2834094}{}\label{structtesting_1_1gmock__matchers__test_1_1_referencing_functor_a5856a8175e2f797a6733a363b2834094}

Definition at line 3947 of file gmock-\/matchers\+\_\+test.\+cc.

\subsection{Member Function Documentation}
\index{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor@{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor}!operator()@{operator()}}
\index{operator()@{operator()}!testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor@{testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor}}
\subsubsection[{\texorpdfstring{operator()(const int \&n)}{operator()(const int &n)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf result\+\_\+type} testing\+::gmock\+\_\+matchers\+\_\+test\+::\+Referencing\+Functor\+::operator() (
\begin{DoxyParamCaption}
\item[{const int \&}]{n}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\hypertarget{structtesting_1_1gmock__matchers__test_1_1_referencing_functor_a149f15ed9afbff28f5c3639c0f3eb255}{}\label{structtesting_1_1gmock__matchers__test_1_1_referencing_functor_a149f15ed9afbff28f5c3639c0f3eb255}

Definition at line 3948 of file gmock-\/matchers\+\_\+test.\+cc.

The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
/home/bhargavi/\+Documents/\+S\+D\+R/\+Copy\+\_\+\+Exam\+\_\+808\+X/vendor/googletest/googlemock/test/\hyperlink{gmock-matchers__test_8cc}{gmock-\/matchers\+\_\+test.\+cc}\end{DoxyCompactItemize}