text:
#pragma once
#include <aws/elastictranscoder/ElasticTranscoder_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/elastictranscoder/model/Encryption.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/elastictranscoder/model/JobAlbumArt.h>
#include <aws/elastictranscoder/model/Captions.h>
#include <aws/elastictranscoder/model/JobWatermark.h>
#include <aws/elastictranscoder/model/Clip.h>

namespace Aws
{
namespace Utils
{
namespace Json
{
  class JsonValue;
} // namespace Json
} // namespace Utils
namespace ElasticTranscoder
{
namespace Model
{

  /**
   *
<important>Outputs recommended instead.</important>If you specified one
   * output for a job, information about that output. If you specified multiple
   * outputs for a job, the Output object lists information about the
   * first output. This duplicates the information that is listed for the first
   * output in the Outputs object.

   */
  class AWS_ELASTICTRANSCODER_API JobOutput
  {
  public:
    JobOutput();
    JobOutput(const Aws::Utils::Json::JsonValue& jsonValue);
    JobOutput& operator=(const Aws::Utils::Json::JsonValue& jsonValue);
    Aws::Utils::Json::JsonValue Jsonize() const;

    /**
     *
A sequential counter, starting with 1, that identifies an output among the
     * outputs from the current job. In the Output syntax, this value is always 1.

     */
    inline const Aws::String& GetId() const{ return m_id; }

    /**
     *
A sequential counter, starting with 1, that identifies an output among the
     * outputs from the current job. In the Output syntax, this value is always 1.

     */
    inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }

    /**
     *
A sequential counter, starting with 1, that identifies an output among the
     * outputs from the current job. In the Output syntax, this value is always 1.

     */
    inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = value; }

    /**
     *
A sequential counter, starting with 1, that identifies an output among the
     * outputs from the current job. In the Output syntax, this value is always 1.

     */
    inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }

    /**
     *
A sequential counter, starting with 1, that identifies an output among the
     * outputs from the current job. In the Output syntax, this value is always 1.

     */
    inline JobOutput& WithId(const Aws::String& value) { SetId(value); return *this;}

    /**
     *
A sequential counter, starting with 1, that identifies an output among the
     * outputs from the current job. In the Output syntax, this value is always 1.

     */
    inline JobOutput& WithId(Aws::String&& value) { SetId(value); return *this;}

    /**
     *
A sequential counter, starting with 1, that identifies an output among the
     * outputs from the current job. In the Output syntax, this value is always 1.

     */
    inline JobOutput& WithId(const char* value) { SetId(value); return *this;}

    /**
     *
 The name to assign to the transcoded file. Elastic Transcoder saves the file
     * in the Amazon S3 bucket specified by the OutputBucket object in the
     * pipeline that is specified by the pipeline ID.

     */
    inline const Aws::String& GetKey() const{ return m_key; }

    /**
     *
 The name to assign to the transcoded file. Elastic Transcoder saves the file
     * in the Amazon S3 bucket specified by the OutputBucket object in the
     * pipeline that is specified by the pipeline ID.

     */
    inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }

    /**
     *
 The name to assign to the transcoded file. Elastic Transcoder saves the file
     * in the Amazon S3 bucket specified by the OutputBucket object in the
     * pipeline that is specified by the pipeline ID.

     */
    inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = value; }

    /**
     *
 The name to assign to the transcoded file. Elastic Transcoder saves the file
     * in the Amazon S3 bucket specified by the OutputBucket object in the
     * pipeline that is specified by the pipeline ID.

     */
    inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }

    /**
     *
 The name to assign to the transcoded file. Elastic Transcoder saves the file
     * in the Amazon S3 bucket specified by the OutputBucket object in the
     * pipeline that is specified by the pipeline ID.

     */
    inline JobOutput& WithKey(const Aws::String& value) { SetKey(value); return *this;}

    /**
     *
 The name to assign to the transcoded file. Elastic Transcoder saves the file
     * in the Amazon S3 bucket specified by the OutputBucket object in the
     * pipeline that is specified by the pipeline ID.

     */
    inline JobOutput& WithKey(Aws::String&& value) { SetKey(value); return *this;}

    /**
     *
 The name to assign to the transcoded file. Elastic Transcoder saves the file
     * in the Amazon S3 bucket specified by the OutputBucket object in the
     * pipeline that is specified by the pipeline ID.

     */
    inline JobOutput& WithKey(const char* value) { SetKey(value); return *this;}

    /**
     *
Whether you want Elastic Transcoder to create thumbnails for your videos and,
     * if so, how you want Elastic Transcoder to name the files.

If you don't
     * want Elastic Transcoder to create thumbnails, specify "".

 If you do want
     * Elastic Transcoder to create thumbnails, specify the information that you want
     * to include in the file name for each thumbnail. You can specify the following
     * values in any sequence:

 {count}
     * (Required): If you want to create thumbnails, you must include
     * {count} in the ThumbnailPattern object. Wherever you
     * specify {count}, Elastic Transcoder adds a five-digit sequence
     * number (beginning with 00001) to thumbnail file names. The number
     * indicates where a given thumbnail appears in the sequence of thumbnails for a
     * transcoded file.
 <important>If you specify a literal value and/or
     * {resolution} but you omit {count}, Elastic Transcoder
     * returns a validation error and does not create the job.</important>

     *
 Literal values (Optional): You can specify literal values anywhere in
     * the ThumbnailPattern object. For example, you can include them as a
     * file name prefix or as a delimiter between {resolution} and
     * {count}.

 {resolution}
     * (Optional): If you want Elastic Transcoder to include the resolution in the
     * file name, include {resolution} in the
     * ThumbnailPattern object.

When creating
     * thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg
     * or .png) that appears in the preset that you specified in the
     * PresetID value of CreateJobOutput. Elastic Transcoder
     * also appends the applicable file name extension.

     */
    inline const Aws::String& GetThumbnailPattern() const{ return m_thumbnailPattern; }

    /**
     *
Whether you want Elastic Transcoder to create thumbnails for your videos and,
     * if so, how you want Elastic Transcoder to name the files.

If you don't
     * want Elastic Transcoder to create thumbnails, specify "".

 If you do want
     * Elastic Transcoder to create thumbnails, specify the information that you want
     * to include in the file name for each thumbnail. You can specify the following
     * values in any sequence:

 {count}
     * (Required): If you want to create thumbnails, you must include
     * {count} in the ThumbnailPattern object. Wherever you
     * specify {count}, Elastic Transcoder adds a five-digit sequence
     * number (beginning with 00001) to thumbnail file names. The number
     * indicates where a given thumbnail appears in the sequence of thumbnails for a
     * transcoded file.
 <important>If you specify a literal value and/or
     * {resolution} but you omit {count}, Elastic Transcoder
     * returns a validation error and does not create the job.</important>

     *
 Literal values (Optional): You can specify literal values anywhere in
     * the ThumbnailPattern object. For example, you can include them as a
     * file name prefix or as a delimiter between {resolution} and
     * {count}.

 {resolution}
     * (Optional): If you want Elastic Transcoder to include the resolution in the
     * file name, include {resolution} in the
     * ThumbnailPattern object.

When creating
     * thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg
     * or .png) that appears in the preset that you specified in the
     * PresetID value of CreateJobOutput. Elastic Transcoder
     * also appends the applicable file name extension.

     */
    inline void SetThumbnailPattern(const Aws::String& value) { m_thumbnailPatternHasBeenSet = true; m_thumbnailPattern = value; }

    /**
     *
Whether you want Elastic Transcoder to create thumbnails for your videos and,
     * if so, how you want Elastic Transcoder to name the files.

If you don't
     * want Elastic Transcoder to create thumbnails, specify "".

 If you do want
     * Elastic Transcoder to create thumbnails, specify the information that you want
     * to include in the file name for each thumbnail. You can specify the following
     * values in any sequence:

 {count}
     * (Required): If you want to create thumbnails, you must include
     * {count} in the ThumbnailPattern object. Wherever you
     * specify {count}, Elastic Transcoder adds a five-digit sequence
     * number (beginning with 00001) to thumbnail file names. The number
     * indicates where a given thumbnail appears in the sequence of thumbnails for a
     * transcoded file.
 <important>If you specify a literal value and/or
     * {resolution} but you omit {count}, Elastic Transcoder
     * returns a validation error and does not create the job.</important>

     *
 Literal values (Optional): You can specify literal values anywhere in
     * the ThumbnailPattern object. For example, you can include them as a
     * file name prefix or as a delimiter between {resolution} and
     * {count}.

 {resolution}
     * (Optional): If you want Elastic Transcoder to include the resolution in the
     * file name, include {resolution} in the
     * ThumbnailPattern object.

When creating
     * thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg
     * or .png) that appears in the preset that you specified in the
     * PresetID value of CreateJobOutput. Elastic Transcoder
     * also appends the applicable file name extension.

     */
    inline void SetThumbnailPattern(Aws::String&& value) { m_thumbnailPatternHasBeenSet = true; m_thumbnailPattern = value; }

    /**
     *
Whether you want Elastic Transcoder to create thumbnails for your videos and,
     * if so, how you want Elastic Transcoder to name the files.

If you don't
     * want Elastic Transcoder to create thumbnails, specify "".

 If you do want
     * Elastic Transcoder to create thumbnails, specify the information that you want
     * to include in the file name for each thumbnail. You can specify the following
     * values in any sequence:

 {count}
     * (Required): If you want to create thumbnails, you must include
     * {count} in the ThumbnailPattern object. Wherever you
     * specify {count}, Elastic Transcoder adds a five-digit sequence
     * number (beginning with 00001) to thumbnail file names. The number
     * indicates where a given thumbnail appears in the sequence of thumbnails for a
     * transcoded file.
 <important>If you specify a literal value and/or
     * {resolution} but you omit {count}, Elastic Transcoder
     * returns a validation error and does not create the job.</important>

     *
 Literal values (Optional): You can specify literal values anywhere in
     * the ThumbnailPattern object. For example, you can include them as a
     * file name prefix or as a delimiter between {resolution} and
     * {count}.

 {resolution}
     * (Optional): If you want Elastic Transcoder to include the resolution in the
     * file name, include {resolution} in the
     * ThumbnailPattern object.

When creating
     * thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg
     * or .png) that appears in the preset that you specified in the
     * PresetID value of CreateJobOutput. Elastic Transcoder
     * also appends the applicable file name extension.

     */
    inline void SetThumbnailPattern(const char* value) { m_thumbnailPatternHasBeenSet = true; m_thumbnailPattern.assign(value); }

    /**
     *
Whether you want Elastic Transcoder to create thumbnails for your videos and,
     * if so, how you want Elastic Transcoder to name the files.

If you don't
     * want Elastic Transcoder to create thumbnails, specify "".

 If you do want
     * Elastic Transcoder to create thumbnails, specify the information that you want
     * to include in the file name for each thumbnail. You can specify the following
     * values in any sequence:

 {count}
     * (Required): If you want to create thumbnails, you must include
     * {count} in the ThumbnailPattern object. Wherever you
     * specify {count}, Elastic Transcoder adds a five-digit sequence
     * number (beginning with 00001) to thumbnail file names. The number
     * indicates where a given thumbnail appears in the sequence of thumbnails for a
     * transcoded file.
 <important>If you specify a literal value and/or
     * {resolution} but you omit {count}, Elastic Transcoder
     * returns a validation error and does not create the job.</important>

     *
 Literal values (Optional): You can specify literal values anywhere in
     * the ThumbnailPattern object. For example, you can include them as a
     * file name prefix or as a delimiter between {resolution} and
     * {count}.

 {resolution}
     * (Optional): If you want Elastic Transcoder to include the resolution in the
     * file name, include {resolution} in the
     * ThumbnailPattern object.

When creating
     * thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg
     * or .png) that appears in the preset that you specified in the
     * PresetID value of CreateJobOutput. Elastic Transcoder
     * also appends the applicable file name extension.

     */
    inline JobOutput& WithThumbnailPattern(const Aws::String& value) { SetThumbnailPattern(value); return *this;}

    /**
     *
Whether you want Elastic Transcoder to create thumbnails for your videos and,
     * if so, how you want Elastic Transcoder to name the files.

If you don't
     * want Elastic Transcoder to create thumbnails, specify "".

 If you do want
     * Elastic Transcoder to create thumbnails, specify the information that you want
     * to include in the file name for each thumbnail. You can specify the following
     * values in any sequence:

 {count}
     * (Required): If you want to create thumbnails, you must include
     * {count} in the ThumbnailPattern object. Wherever you
     * specify {count}, Elastic Transcoder adds a five-digit sequence
     * number (beginning with 00001) to thumbnail file names. The number
     * indicates where a given thumbnail appears in the sequence of thumbnails for a
     * transcoded file.
 <important>If you specify a literal value and/or
     * {resolution} but you omit {count}, Elastic Transcoder
     * returns a validation error and does not create the job.</important>

     *
 Literal values (Optional): You can specify literal values anywhere in
     * the ThumbnailPattern object. For example, you can include them as a
     * file name prefix or as a delimiter between {resolution} and
     * {count}.

 {resolution}
     * (Optional): If you want Elastic Transcoder to include the resolution in the
     * file name, include {resolution} in the
     * ThumbnailPattern object.

When creating
     * thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg
     * or .png) that appears in the preset that you specified in the
     * PresetID value of CreateJobOutput. Elastic Transcoder
     * also appends the applicable file name extension.

     */
    inline JobOutput& WithThumbnailPattern(Aws::String&& value) { SetThumbnailPattern(value); return *this;}

    /**
     *
Whether you want Elastic Transcoder to create thumbnails for your videos and,
     * if so, how you want Elastic Transcoder to name the files.

If you don't
     * want Elastic Transcoder to create thumbnails, specify "".

 If you do want
     * Elastic Transcoder to create thumbnails, specify the information that you want
     * to include in the file name for each thumbnail. You can specify the following
     * values in any sequence:

 {count}
     * (Required): If you want to create thumbnails, you must include
     * {count} in the ThumbnailPattern object. Wherever you
     * specify {count}, Elastic Transcoder adds a five-digit sequence
     * number (beginning with 00001) to thumbnail file names. The number
     * indicates where a given thumbnail appears in the sequence of thumbnails for a
     * transcoded file.
 <important>If you specify a literal value and/or
     * {resolution} but you omit {count}, Elastic Transcoder
     * returns a validation error and does not create the job.</important>

     *
 Literal values (Optional): You can specify literal values anywhere in
     * the ThumbnailPattern object. For example, you can include them as a
     * file name prefix or as a delimiter between {resolution} and
     * {count}.

 {resolution}
     * (Optional): If you want Elastic Transcoder to include the resolution in the
     * file name, include {resolution} in the
     * ThumbnailPattern object.

When creating
     * thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg
     * or .png) that appears in the preset that you specified in the
     * PresetID value of CreateJobOutput. Elastic Transcoder
     * also appends the applicable file name extension.

     */
    inline JobOutput& WithThumbnailPattern(const char* value) { SetThumbnailPattern(value); return *this;}

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your thumbnail.

     */
    inline const Encryption& GetThumbnailEncryption() const{ return m_thumbnailEncryption; }

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your thumbnail.

     */
    inline void SetThumbnailEncryption(const Encryption& value) { m_thumbnailEncryptionHasBeenSet = true; m_thumbnailEncryption = value; }

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your thumbnail.

     */
    inline void SetThumbnailEncryption(Encryption&& value) { m_thumbnailEncryptionHasBeenSet = true; m_thumbnailEncryption = value; }

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your thumbnail.

     */
    inline JobOutput& WithThumbnailEncryption(const Encryption& value) { SetThumbnailEncryption(value); return *this;}

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your thumbnail.

     */
    inline JobOutput& WithThumbnailEncryption(Encryption&& value) { SetThumbnailEncryption(value); return *this;}

    /**
     *
 The number of degrees clockwise by which you want Elastic Transcoder to
     * rotate the output relative to the input. Enter one of the following values:

     *
auto, 0, 90, 180,
     * 270

 The value auto generally works only if the
     * file that you're transcoding contains rotation metadata.

     */
    inline const Aws::String& GetRotate() const{ return m_rotate; }

    /**
     *
 The number of degrees clockwise by which you want Elastic Transcoder to
     * rotate the output relative to the input. Enter one of the following values:

     *
auto, 0, 90, 180,
     * 270

 The value auto generally works only if the
     * file that you're transcoding contains rotation metadata.

     */
    inline void SetRotate(const Aws::String& value) { m_rotateHasBeenSet = true; m_rotate = value; }

    /**
     *
 The number of degrees clockwise by which you want Elastic Transcoder to
     * rotate the output relative to the input. Enter one of the following values:

     *
auto, 0, 90, 180,
     * 270

 The value auto generally works only if the
     * file that you're transcoding contains rotation metadata.

     */
    inline void SetRotate(Aws::String&& value) { m_rotateHasBeenSet = true; m_rotate = value; }

    /**
     *
 The number of degrees clockwise by which you want Elastic Transcoder to
     * rotate the output relative to the input. Enter one of the following values:

     *
auto, 0, 90, 180,
     * 270

 The value auto generally works only if the
     * file that you're transcoding contains rotation metadata.

     */
    inline void SetRotate(const char* value) { m_rotateHasBeenSet = true; m_rotate.assign(value); }

    /**
     *
 The number of degrees clockwise by which you want Elastic Transcoder to
     * rotate the output relative to the input. Enter one of the following values:

     *
auto, 0, 90, 180,
     * 270

 The value auto generally works only if the
     * file that you're transcoding contains rotation metadata.

     */
    inline JobOutput& WithRotate(const Aws::String& value) { SetRotate(value); return *this;}

    /**
     *
 The number of degrees clockwise by which you want Elastic Transcoder to
     * rotate the output relative to the input. Enter one of the following values:

     *
auto, 0, 90, 180,
     * 270

 The value auto generally works only if the
     * file that you're transcoding contains rotation metadata.

     */
    inline JobOutput& WithRotate(Aws::String&& value) { SetRotate(value); return *this;}

    /**
     *
 The number of degrees clockwise by which you want Elastic Transcoder to
     * rotate the output relative to the input. Enter one of the following values:

     *
auto, 0, 90, 180,
     * 270

 The value auto generally works only if the
     * file that you're transcoding contains rotation metadata.

     */
    inline JobOutput& WithRotate(const char* value) { SetRotate(value); return *this;}

    /**
     *
The value of the Id object for the preset that you want to use
     * for this job. The preset determines the audio, video, and thumbnail settings
     * that Elastic Transcoder uses for transcoding. To use a preset that you created,
     * specify the preset ID that Elastic Transcoder returned in the response when you
     * created the preset. You can also use the Elastic Transcoder system presets,
     * which you can get with ListPresets.

     */
    inline const Aws::String& GetPresetId() const{ return m_presetId; }

    /**
     *
The value of the Id object for the preset that you want to use
     * for this job. The preset determines the audio, video, and thumbnail settings
     * that Elastic Transcoder uses for transcoding. To use a preset that you created,
     * specify the preset ID that Elastic Transcoder returned in the response when you
     * created the preset. You can also use the Elastic Transcoder system presets,
     * which you can get with ListPresets.

     */
    inline void SetPresetId(const Aws::String& value) { m_presetIdHasBeenSet = true; m_presetId = value; }

    /**
     *
The value of the Id object for the preset that you want to use
     * for this job. The preset determines the audio, video, and thumbnail settings
     * that Elastic Transcoder uses for transcoding. To use a preset that you created,
     * specify the preset ID that Elastic Transcoder returned in the response when you
     * created the preset. You can also use the Elastic Transcoder system presets,
     * which you can get with ListPresets.

     */
    inline void SetPresetId(Aws::String&& value) { m_presetIdHasBeenSet = true; m_presetId = value; }

    /**
     *
The value of the Id object for the preset that you want to use
     * for this job. The preset determines the audio, video, and thumbnail settings
     * that Elastic Transcoder uses for transcoding. To use a preset that you created,
     * specify the preset ID that Elastic Transcoder returned in the response when you
     * created the preset. You can also use the Elastic Transcoder system presets,
     * which you can get with ListPresets.

     */
    inline void SetPresetId(const char* value) { m_presetIdHasBeenSet = true; m_presetId.assign(value); }

    /**
     *
The value of the Id object for the preset that you want to use
     * for this job. The preset determines the audio, video, and thumbnail settings
     * that Elastic Transcoder uses for transcoding. To use a preset that you created,
     * specify the preset ID that Elastic Transcoder returned in the response when you
     * created the preset. You can also use the Elastic Transcoder system presets,
     * which you can get with ListPresets.

     */
    inline JobOutput& WithPresetId(const Aws::String& value) { SetPresetId(value); return *this;}

    /**
     *
The value of the Id object for the preset that you want to use
     * for this job. The preset determines the audio, video, and thumbnail settings
     * that Elastic Transcoder uses for transcoding. To use a preset that you created,
     * specify the preset ID that Elastic Transcoder returned in the response when you
     * created the preset. You can also use the Elastic Transcoder system presets,
     * which you can get with ListPresets.

     */
    inline JobOutput& WithPresetId(Aws::String&& value) { SetPresetId(value); return *this;}

    /**
     *
The value of the Id object for the preset that you want to use
     * for this job. The preset determines the audio, video, and thumbnail settings
     * that Elastic Transcoder uses for transcoding. To use a preset that you created,
     * specify the preset ID that Elastic Transcoder returned in the response when you
     * created the preset. You can also use the Elastic Transcoder system presets,
     * which you can get with ListPresets.

     */
    inline JobOutput& WithPresetId(const char* value) { SetPresetId(value); return *this;}

    /**
     *
<important>(Outputs in Fragmented MP4 or MPEG-TS format only.</important>If
     * you specify a preset in PresetId for which the value of
     * Container is fmp4 (Fragmented MP4) or ts
     * (MPEG-TS), SegmentDuration is the target maximum duration of each
     * segment in seconds. For HLSv3 format playlists, each media segment
     * is stored in a separate .ts file. For HLSv4 and
     * Smooth playlists, all media segments for an output are stored in a
     * single file. Each segment is approximately the length of the
     * SegmentDuration, though individual segments might be shorter or
     * longer.

The range of valid values is 1 to 60 seconds. If the duration of
     * the video is not evenly divisible by SegmentDuration, the duration
     * of the last segment is the remainder of total length/SegmentDuration.

     *
Elastic Transcoder creates an output-specific playlist for each output
     * HLS output that you specify in OutputKeys. To add an output to the
     * master playlist for this job, include it in the OutputKeys of the
     * associated playlist.

     */
    inline const Aws::String& GetSegmentDuration() const{ return m_segmentDuration; }

    /**
     *
<important>(Outputs in Fragmented MP4 or MPEG-TS format only.</important>If
     * you specify a preset in PresetId for which the value of
     * Container is fmp4 (Fragmented MP4) or ts
     * (MPEG-TS), SegmentDuration is the target maximum duration of each
     * segment in seconds. For HLSv3 format playlists, each media segment
     * is stored in a separate .ts file. For HLSv4 and
     * Smooth playlists, all media segments for an output are stored in a
     * single file. Each segment is approximately the length of the
     * SegmentDuration, though individual segments might be shorter or
     * longer.

The range of valid values is 1 to 60 seconds. If the duration of
     * the video is not evenly divisible by SegmentDuration, the duration
     * of the last segment is the remainder of total length/SegmentDuration.

     *
Elastic Transcoder creates an output-specific playlist for each output
     * HLS output that you specify in OutputKeys. To add an output to the
     * master playlist for this job, include it in the OutputKeys of the
     * associated playlist.

     */
    inline void SetSegmentDuration(const Aws::String& value) { m_segmentDurationHasBeenSet = true; m_segmentDuration = value; }

    /**
     *
<important>(Outputs in Fragmented MP4 or MPEG-TS format only.</important>If
     * you specify a preset in PresetId for which the value of
     * Container is fmp4 (Fragmented MP4) or ts
     * (MPEG-TS), SegmentDuration is the target maximum duration of each
     * segment in seconds. For HLSv3 format playlists, each media segment
     * is stored in a separate .ts file. For HLSv4 and
     * Smooth playlists, all media segments for an output are stored in a
     * single file. Each segment is approximately the length of the
     * SegmentDuration, though individual segments might be shorter or
     * longer.

The range of valid values is 1 to 60 seconds. If the duration of
     * the video is not evenly divisible by SegmentDuration, the duration
     * of the last segment is the remainder of total length/SegmentDuration.

     *
Elastic Transcoder creates an output-specific playlist for each output
     * HLS output that you specify in OutputKeys. To add an output to the
     * master playlist for this job, include it in the OutputKeys of the
     * associated playlist.

     */
    inline void SetSegmentDuration(Aws::String&& value) { m_segmentDurationHasBeenSet = true; m_segmentDuration = value; }

    /**
     *
<important>(Outputs in Fragmented MP4 or MPEG-TS format only.</important>If
     * you specify a preset in PresetId for which the value of
     * Container is fmp4 (Fragmented MP4) or ts
     * (MPEG-TS), SegmentDuration is the target maximum duration of each
     * segment in seconds. For HLSv3 format playlists, each media segment
     * is stored in a separate .ts file. For HLSv4 and
     * Smooth playlists, all media segments for an output are stored in a
     * single file. Each segment is approximately the length of the
     * SegmentDuration, though individual segments might be shorter or
     * longer.

The range of valid values is 1 to 60 seconds. If the duration of
     * the video is not evenly divisible by SegmentDuration, the duration
     * of the last segment is the remainder of total length/SegmentDuration.

     *
Elastic Transcoder creates an output-specific playlist for each output
     * HLS output that you specify in OutputKeys. To add an output to the
     * master playlist for this job, include it in the OutputKeys of the
     * associated playlist.

     */
    inline void SetSegmentDuration(const char* value) { m_segmentDurationHasBeenSet = true; m_segmentDuration.assign(value); }

    /**
     *
<important>(Outputs in Fragmented MP4 or MPEG-TS format only.</important>If
     * you specify a preset in PresetId for which the value of
     * Container is fmp4 (Fragmented MP4) or ts
     * (MPEG-TS), SegmentDuration is the target maximum duration of each
     * segment in seconds. For HLSv3 format playlists, each media segment
     * is stored in a separate .ts file. For HLSv4 and
     * Smooth playlists, all media segments for an output are stored in a
     * single file. Each segment is approximately the length of the
     * SegmentDuration, though individual segments might be shorter or
     * longer.

The range of valid values is 1 to 60 seconds. If the duration of
     * the video is not evenly divisible by SegmentDuration, the duration
     * of the last segment is the remainder of total length/SegmentDuration.

     *
Elastic Transcoder creates an output-specific playlist for each output
     * HLS output that you specify in OutputKeys. To add an output to the
     * master playlist for this job, include it in the OutputKeys of the
     * associated playlist.

     */
    inline JobOutput& WithSegmentDuration(const Aws::String& value) { SetSegmentDuration(value); return *this;}

    /**
     *
<important>(Outputs in Fragmented MP4 or MPEG-TS format only.</important>If
     * you specify a preset in PresetId for which the value of
     * Container is fmp4 (Fragmented MP4) or ts
     * (MPEG-TS), SegmentDuration is the target maximum duration of each
     * segment in seconds. For HLSv3 format playlists, each media segment
     * is stored in a separate .ts file. For HLSv4 and
     * Smooth playlists, all media segments for an output are stored in a
     * single file. Each segment is approximately the length of the
     * SegmentDuration, though individual segments might be shorter or
     * longer.

The range of valid values is 1 to 60 seconds. If the duration of
     * the video is not evenly divisible by SegmentDuration, the duration
     * of the last segment is the remainder of total length/SegmentDuration.

     *
Elastic Transcoder creates an output-specific playlist for each output
     * HLS output that you specify in OutputKeys. To add an output to the
     * master playlist for this job, include it in the OutputKeys of the
     * associated playlist.

     */
    inline JobOutput& WithSegmentDuration(Aws::String&& value) { SetSegmentDuration(value); return *this;}

    /**
     *
<important>(Outputs in Fragmented MP4 or MPEG-TS format only.</important>If
     * you specify a preset in PresetId for which the value of
     * Container is fmp4 (Fragmented MP4) or ts
     * (MPEG-TS), SegmentDuration is the target maximum duration of each
     * segment in seconds. For HLSv3 format playlists, each media segment
     * is stored in a separate .ts file. For HLSv4 and
     * Smooth playlists, all media segments for an output are stored in a
     * single file. Each segment is approximately the length of the
     * SegmentDuration, though individual segments might be shorter or
     * longer.

The range of valid values is 1 to 60 seconds. If the duration of
     * the video is not evenly divisible by SegmentDuration, the duration
     * of the last segment is the remainder of total length/SegmentDuration.

     *
Elastic Transcoder creates an output-specific playlist for each output
     * HLS output that you specify in OutputKeys. To add an output to the
     * master playlist for this job, include it in the OutputKeys of the
     * associated playlist.

     */
    inline JobOutput& WithSegmentDuration(const char* value) { SetSegmentDuration(value); return *this;}

    /**
     *
 The status of one output in a job. If you specified only one output for the
     * job, Outputs:Status is always the same as Job:Status.
     * If you specified more than one output:

Job:Status and
     * Outputs:Status for all of the outputs is Submitted until Elastic
     * Transcoder starts to process the first output.

When Elastic Transcoder
     * starts to process the first output, Outputs:Status for that output
     * and Job:Status both change to Progressing. For each output, the
     * value of Outputs:Status remains Submitted until Elastic Transcoder
     * starts to process the output.

Job:Status remains Progressing until all
     * of the outputs reach a terminal status, either Complete or Error.

When
     * all of the outputs reach a terminal status, Job:Status changes to
     * Complete only if Outputs:Status for all of the outputs is
     * Complete. If Outputs:Status for one or more outputs is
     * Error, the terminal status for Job:Status is also
     * Error.

 The value of Status is one of the
     * following: Submitted, Progressing,
     * Complete, Canceled, or Error.

     */
    inline const Aws::String& GetStatus() const{ return m_status; }

    /**
     *
 The status of one output in a job. If you specified only one output for the
     * job, Outputs:Status is always the same as Job:Status.
     * If you specified more than one output:

Job:Status and
     * Outputs:Status for all of the outputs is Submitted until Elastic
     * Transcoder starts to process the first output.

When Elastic Transcoder
     * starts to process the first output, Outputs:Status for that output
     * and Job:Status both change to Progressing. For each output, the
     * value of Outputs:Status remains Submitted until Elastic Transcoder
     * starts to process the output.

Job:Status remains Progressing until all
     * of the outputs reach a terminal status, either Complete or Error.

When
     * all of the outputs reach a terminal status, Job:Status changes to
     * Complete only if Outputs:Status for all of the outputs is
     * Complete. If Outputs:Status for one or more outputs is
     * Error, the terminal status for Job:Status is also
     * Error.

 The value of Status is one of the
     * following: Submitted, Progressing,
     * Complete, Canceled, or Error.

     */
    inline void SetStatus(const Aws::String& value) { m_statusHasBeenSet = true; m_status = value; }

    /**
     *
 The status of one output in a job. If you specified only one output for the
     * job, Outputs:Status is always the same as Job:Status.
     * If you specified more than one output:

Job:Status and
     * Outputs:Status for all of the outputs is Submitted until Elastic
     * Transcoder starts to process the first output.

When Elastic Transcoder
     * starts to process the first output, Outputs:Status for that output
     * and Job:Status both change to Progressing. For each output, the
     * value of Outputs:Status remains Submitted until Elastic Transcoder
     * starts to process the output.

Job:Status remains Progressing until all
     * of the outputs reach a terminal status, either Complete or Error.

When
     * all of the outputs reach a terminal status, Job:Status changes to
     * Complete only if Outputs:Status for all of the outputs is
     * Complete. If Outputs:Status for one or more outputs is
     * Error, the terminal status for Job:Status is also
     * Error.

 The value of Status is one of the
     * following: Submitted, Progressing,
     * Complete, Canceled, or Error.

     */
    inline void SetStatus(Aws::String&& value) { m_statusHasBeenSet = true; m_status = value; }

    /**
     *
 The status of one output in a job. If you specified only one output for the
     * job, Outputs:Status is always the same as Job:Status.
     * If you specified more than one output:

Job:Status and
     * Outputs:Status for all of the outputs is Submitted until Elastic
     * Transcoder starts to process the first output.

When Elastic Transcoder
     * starts to process the first output, Outputs:Status for that output
     * and Job:Status both change to Progressing. For each output, the
     * value of Outputs:Status remains Submitted until Elastic Transcoder
     * starts to process the output.

Job:Status remains Progressing until all
     * of the outputs reach a terminal status, either Complete or Error.

When
     * all of the outputs reach a terminal status, Job:Status changes to
     * Complete only if Outputs:Status for all of the outputs is
     * Complete. If Outputs:Status for one or more outputs is
     * Error, the terminal status for Job:Status is also
     * Error.

 The value of Status is one of the
     * following: Submitted, Progressing,
     * Complete, Canceled, or Error.

     */
    inline void SetStatus(const char* value) { m_statusHasBeenSet = true; m_status.assign(value); }

    /**
     *
 The status of one output in a job. If you specified only one output for the
     * job, Outputs:Status is always the same as Job:Status.
     * If you specified more than one output:

Job:Status and
     * Outputs:Status for all of the outputs is Submitted until Elastic
     * Transcoder starts to process the first output.

When Elastic Transcoder
     * starts to process the first output, Outputs:Status for that output
     * and Job:Status both change to Progressing. For each output, the
     * value of Outputs:Status remains Submitted until Elastic Transcoder
     * starts to process the output.

Job:Status remains Progressing until all
     * of the outputs reach a terminal status, either Complete or Error.

When
     * all of the outputs reach a terminal status, Job:Status changes to
     * Complete only if Outputs:Status for all of the outputs is
     * Complete. If Outputs:Status for one or more outputs is
     * Error, the terminal status for Job:Status is also
     * Error.

 The value of Status is one of the
     * following: Submitted, Progressing,
     * Complete, Canceled, or Error.

     */
    inline JobOutput& WithStatus(const Aws::String& value) { SetStatus(value); return *this;}

    /**
     *
 The status of one output in a job. If you specified only one output for the
     * job, Outputs:Status is always the same as Job:Status.
     * If you specified more than one output:

Job:Status and
     * Outputs:Status for all of the outputs is Submitted until Elastic
     * Transcoder starts to process the first output.

When Elastic Transcoder
     * starts to process the first output, Outputs:Status for that output
     * and Job:Status both change to Progressing. For each output, the
     * value of Outputs:Status remains Submitted until Elastic Transcoder
     * starts to process the output.

Job:Status remains Progressing until all
     * of the outputs reach a terminal status, either Complete or Error.

When
     * all of the outputs reach a terminal status, Job:Status changes to
     * Complete only if Outputs:Status for all of the outputs is
     * Complete. If Outputs:Status for one or more outputs is
     * Error, the terminal status for Job:Status is also
     * Error.

 The value of Status is one of the
     * following: Submitted, Progressing,
     * Complete, Canceled, or Error.

     */
    inline JobOutput& WithStatus(Aws::String&& value) { SetStatus(value); return *this;}

    /**
     *
 The status of one output in a job. If you specified only one output for the
     * job, Outputs:Status is always the same as Job:Status.
     * If you specified more than one output:

Job:Status and
     * Outputs:Status for all of the outputs is Submitted until Elastic
     * Transcoder starts to process the first output.

When Elastic Transcoder
     * starts to process the first output, Outputs:Status for that output
     * and Job:Status both change to Progressing. For each output, the
     * value of Outputs:Status remains Submitted until Elastic Transcoder
     * starts to process the output.

Job:Status remains Progressing until all
     * of the outputs reach a terminal status, either Complete or Error.

When
     * all of the outputs reach a terminal status, Job:Status changes to
     * Complete only if Outputs:Status for all of the outputs is
     * Complete. If Outputs:Status for one or more outputs is
     * Error, the terminal status for Job:Status is also
     * Error.

 The value of Status is one of the
     * following: Submitted, Progressing,
     * Complete, Canceled, or Error.

     */
    inline JobOutput& WithStatus(const char* value) { SetStatus(value); return *this;}

    /**
     *
Information that further explains Status.

     */
    inline const Aws::String& GetStatusDetail() const{ return m_statusDetail; }

    /**
     *
Information that further explains Status.

     */
    inline void SetStatusDetail(const Aws::String& value) { m_statusDetailHasBeenSet = true; m_statusDetail = value; }

    /**
     *
Information that further explains Status.

     */
    inline void SetStatusDetail(Aws::String&& value) { m_statusDetailHasBeenSet = true; m_statusDetail = value; }

    /**
     *
Information that further explains Status.

     */
    inline void SetStatusDetail(const char* value) { m_statusDetailHasBeenSet = true; m_statusDetail.assign(value); }

    /**
     *
Information that further explains Status.

     */
    inline JobOutput& WithStatusDetail(const Aws::String& value) { SetStatusDetail(value); return *this;}

    /**
     *
Information that further explains Status.

     */
    inline JobOutput& WithStatusDetail(Aws::String&& value) { SetStatusDetail(value); return *this;}

    /**
     *
Information that further explains Status.

     */
    inline JobOutput& WithStatusDetail(const char* value) { SetStatusDetail(value); return *this;}

    /**
     *
Duration of the output file, in seconds.

     */
    inline long long GetDuration() const{ return m_duration; }

    /**
     *
Duration of the output file, in seconds.

     */
    inline void SetDuration(long long value) { m_durationHasBeenSet = true; m_duration = value; }

    /**
     *
Duration of the output file, in seconds.

     */
    inline JobOutput& WithDuration(long long value) { SetDuration(value); return *this;}

    /**
     *
Specifies the width of the output file in pixels.

     */
    inline int GetWidth() const{ return m_width; }

    /**
     *
Specifies the width of the output file in pixels.

     */
    inline void SetWidth(int value) { m_widthHasBeenSet = true; m_width = value; }

    /**
     *
Specifies the width of the output file in pixels.

     */
    inline JobOutput& WithWidth(int value) { SetWidth(value); return *this;}

    /**
     *
Height of the output file, in pixels.

     */
    inline int GetHeight() const{ return m_height; }

    /**
     *
Height of the output file, in pixels.

     */
    inline void SetHeight(int value) { m_heightHasBeenSet = true; m_height = value; }

    /**
     *
Height of the output file, in pixels.

     */
    inline JobOutput& WithHeight(int value) { SetHeight(value); return *this;}

    /**
     *
Frame rate of the output file, in frames per second.

     */
    inline const Aws::String& GetFrameRate() const{ return m_frameRate; }

    /**
     *
Frame rate of the output file, in frames per second.

     */
    inline void SetFrameRate(const Aws::String& value) { m_frameRateHasBeenSet = true; m_frameRate = value; }

    /**
     *
Frame rate of the output file, in frames per second.

     */
    inline void SetFrameRate(Aws::String&& value) { m_frameRateHasBeenSet = true; m_frameRate = value; }

    /**
     *
Frame rate of the output file, in frames per second.

     */
    inline void SetFrameRate(const char* value) { m_frameRateHasBeenSet = true; m_frameRate.assign(value); }

    /**
     *
Frame rate of the output file, in frames per second.

     */
    inline JobOutput& WithFrameRate(const Aws::String& value) { SetFrameRate(value); return *this;}

    /**
     *
Frame rate of the output file, in frames per second.

     */
    inline JobOutput& WithFrameRate(Aws::String&& value) { SetFrameRate(value); return *this;}

    /**
     *
Frame rate of the output file, in frames per second.

     */
    inline JobOutput& WithFrameRate(const char* value) { SetFrameRate(value); return *this;}

    /**
     *
File size of the output file, in bytes.

     */
    inline long long GetFileSize() const{ return m_fileSize; }

    /**
     *
File size of the output file, in bytes.

     */
    inline void SetFileSize(long long value) { m_fileSizeHasBeenSet = true; m_fileSize = value; }

    /**
     *
File size of the output file, in bytes.

     */
    inline JobOutput& WithFileSize(long long value) { SetFileSize(value); return *this;}

    /**
     *
Duration of the output file, in milliseconds.

     */
    inline long long GetDurationMillis() const{ return m_durationMillis; }

    /**
     *
Duration of the output file, in milliseconds.

     */
    inline void SetDurationMillis(long long value) { m_durationMillisHasBeenSet = true; m_durationMillis = value; }

    /**
     *
Duration of the output file, in milliseconds.

     */
    inline JobOutput& WithDurationMillis(long long value) { SetDurationMillis(value); return *this;}

    /**
     *
Information about the watermarks that you want Elastic Transcoder to add to
     * the video during transcoding. You can specify up to four watermarks for each
     * output. Settings for each watermark must be defined in the preset that you
     * specify in Preset for the current output.

Watermarks are
     * added to the output video in the sequence in which you list them in the job
     * output—the first watermark in the list is added to the output video first, the
     * second watermark in the list is added next, and so on. As a result, if the
     * settings in a preset cause Elastic Transcoder to place all watermarks in the
     * same location, the second watermark that you add will cover the first one, the
     * third one will cover the second, and the fourth one will cover the third.

     */
    inline const Aws::Vector<JobWatermark>& GetWatermarks() const{ return m_watermarks; }

    /**
     *
Information about the watermarks that you want Elastic Transcoder to add to
     * the video during transcoding. You can specify up to four watermarks for each
     * output. Settings for each watermark must be defined in the preset that you
     * specify in Preset for the current output.

Watermarks are
     * added to the output video in the sequence in which you list them in the job
     * output—the first watermark in the list is added to the output video first, the
     * second watermark in the list is added next, and so on. As a result, if the
     * settings in a preset cause Elastic Transcoder to place all watermarks in the
     * same location, the second watermark that you add will cover the first one, the
     * third one will cover the second, and the fourth one will cover the third.

     */
    inline void SetWatermarks(const Aws::Vector<JobWatermark>& value) { m_watermarksHasBeenSet = true; m_watermarks = value; }

    /**
     *
Information about the watermarks that you want Elastic Transcoder to add to
     * the video during transcoding. You can specify up to four watermarks for each
     * output. Settings for each watermark must be defined in the preset that you
     * specify in Preset for the current output.

Watermarks are
     * added to the output video in the sequence in which you list them in the job
     * output—the first watermark in the list is added to the output video first, the
     * second watermark in the list is added next, and so on. As a result, if the
     * settings in a preset cause Elastic Transcoder to place all watermarks in the
     * same location, the second watermark that you add will cover the first one, the
     * third one will cover the second, and the fourth one will cover the third.

     */
    inline void SetWatermarks(Aws::Vector<JobWatermark>&& value) { m_watermarksHasBeenSet = true; m_watermarks = value; }

    /**
     *
Information about the watermarks that you want Elastic Transcoder to add to
     * the video during transcoding. You can specify up to four watermarks for each
     * output. Settings for each watermark must be defined in the preset that you
     * specify in Preset for the current output.

Watermarks are
     * added to the output video in the sequence in which you list them in the job
     * output—the first watermark in the list is added to the output video first, the
     * second watermark in the list is added next, and so on. As a result, if the
     * settings in a preset cause Elastic Transcoder to place all watermarks in the
     * same location, the second watermark that you add will cover the first one, the
     * third one will cover the second, and the fourth one will cover the third.

     */
    inline JobOutput& WithWatermarks(const Aws::Vector<JobWatermark>& value) { SetWatermarks(value); return *this;}

    /**
     *
Information about the watermarks that you want Elastic Transcoder to add to
     * the video during transcoding. You can specify up to four watermarks for each
     * output. Settings for each watermark must be defined in the preset that you
     * specify in Preset for the current output.

Watermarks are
     * added to the output video in the sequence in which you list them in the job
     * output—the first watermark in the list is added to the output video first, the
     * second watermark in the list is added next, and so on. As a result, if the
     * settings in a preset cause Elastic Transcoder to place all watermarks in the
     * same location, the second watermark that you add will cover the first one, the
     * third one will cover the second, and the fourth one will cover the third.

     */
    inline JobOutput& WithWatermarks(Aws::Vector<JobWatermark>&& value) { SetWatermarks(value); return *this;}

    /**
     *
Information about the watermarks that you want Elastic Transcoder to add to
     * the video during transcoding. You can specify up to four watermarks for each
     * output. Settings for each watermark must be defined in the preset that you
     * specify in Preset for the current output.

Watermarks are
     * added to the output video in the sequence in which you list them in the job
     * output—the first watermark in the list is added to the output video first, the
     * second watermark in the list is added next, and so on. As a result, if the
     * settings in a preset cause Elastic Transcoder to place all watermarks in the
     * same location, the second watermark that you add will cover the first one, the
     * third one will cover the second, and the fourth one will cover the third.

     */
    inline JobOutput& AddWatermarks(const JobWatermark& value) { m_watermarksHasBeenSet = true; m_watermarks.push_back(value); return *this; }

    /**
     *
Information about the watermarks that you want Elastic Transcoder to add to
     * the video during transcoding. You can specify up to four watermarks for each
     * output. Settings for each watermark must be defined in the preset that you
     * specify in Preset for the current output.

Watermarks are
     * added to the output video in the sequence in which you list them in the job
     * output—the first watermark in the list is added to the output video first, the
     * second watermark in the list is added next, and so on. As a result, if the
     * settings in a preset cause Elastic Transcoder to place all watermarks in the
     * same location, the second watermark that you add will cover the first one, the
     * third one will cover the second, and the fourth one will cover the third.

     */
    inline JobOutput& AddWatermarks(JobWatermark&& value) { m_watermarksHasBeenSet = true; m_watermarks.push_back(value); return *this; }

    /**
     *
The album art to be associated with the output file, if any.

     */
    inline const JobAlbumArt& GetAlbumArt() const{ return m_albumArt; }

    /**
     *
The album art to be associated with the output file, if any.

     */
    inline void SetAlbumArt(const JobAlbumArt& value) { m_albumArtHasBeenSet = true; m_albumArt = value; }

    /**
     *
The album art to be associated with the output file, if any.

     */
    inline void SetAlbumArt(JobAlbumArt&& value) { m_albumArtHasBeenSet = true; m_albumArt = value; }

    /**
     *
The album art to be associated with the output file, if any.

     */
    inline JobOutput& WithAlbumArt(const JobAlbumArt& value) { SetAlbumArt(value); return *this;}

    /**
     *
The album art to be associated with the output file, if any.

     */
    inline JobOutput& WithAlbumArt(JobAlbumArt&& value) { SetAlbumArt(value); return *this;}

    /**
     *
You can create an output file that contains an excerpt from the input file.
     * This excerpt, called a clip, can come from the beginning, middle, or end of the
     * file. The Composition object contains settings for the clips that make up an
     * output file. For the current release, you can only specify settings for a single
     * clip per output file. The Composition object cannot be null.

     */
    inline const Aws::Vector<Clip>& GetComposition() const{ return m_composition; }

    /**
     *
You can create an output file that contains an excerpt from the input file.
     * This excerpt, called a clip, can come from the beginning, middle, or end of the
     * file. The Composition object contains settings for the clips that make up an
     * output file. For the current release, you can only specify settings for a single
     * clip per output file. The Composition object cannot be null.

     */
    inline void SetComposition(const Aws::Vector<Clip>& value) { m_compositionHasBeenSet = true; m_composition = value; }

    /**
     *
You can create an output file that contains an excerpt from the input file.
     * This excerpt, called a clip, can come from the beginning, middle, or end of the
     * file. The Composition object contains settings for the clips that make up an
     * output file. For the current release, you can only specify settings for a single
     * clip per output file. The Composition object cannot be null.

     */
    inline void SetComposition(Aws::Vector<Clip>&& value) { m_compositionHasBeenSet = true; m_composition = value; }

    /**
     *
You can create an output file that contains an excerpt from the input file.
     * This excerpt, called a clip, can come from the beginning, middle, or end of the
     * file. The Composition object contains settings for the clips that make up an
     * output file. For the current release, you can only specify settings for a single
     * clip per output file. The Composition object cannot be null.

     */
    inline JobOutput& WithComposition(const Aws::Vector<Clip>& value) { SetComposition(value); return *this;}

    /**
     *
You can create an output file that contains an excerpt from the input file.
     * This excerpt, called a clip, can come from the beginning, middle, or end of the
     * file. The Composition object contains settings for the clips that make up an
     * output file. For the current release, you can only specify settings for a single
     * clip per output file. The Composition object cannot be null.

     */
    inline JobOutput& WithComposition(Aws::Vector<Clip>&& value) { SetComposition(value); return *this;}

    /**
     *
You can create an output file that contains an excerpt from the input file.
     * This excerpt, called a clip, can come from the beginning, middle, or end of the
     * file. The Composition object contains settings for the clips that make up an
     * output file. For the current release, you can only specify settings for a single
     * clip per output file. The Composition object cannot be null.

     */
    inline JobOutput& AddComposition(const Clip& value) { m_compositionHasBeenSet = true; m_composition.push_back(value); return *this; }

    /**
     *
You can create an output file that contains an excerpt from the input file.
     * This excerpt, called a clip, can come from the beginning, middle, or end of the
     * file. The Composition object contains settings for the clips that make up an
     * output file. For the current release, you can only specify settings for a single
     * clip per output file. The Composition object cannot be null.

     */
    inline JobOutput& AddComposition(Clip&& value) { m_compositionHasBeenSet = true; m_composition.push_back(value); return *this; }

    /**
     *
You can configure Elastic Transcoder to transcode captions, or subtitles,
     * from one format to another. All captions must be in UTF-8. Elastic Transcoder
     * supports two types of captions:

Embedded: Embedded
     * captions are included in the same file as the audio and video. Elastic
     * Transcoder supports only one embedded caption per language, to a maximum of 300
     * embedded captions per file.

Valid input values include: CEA-608
     * (EIA-608, first non-empty channel only), CEA-708 (EIA-708,
     * first non-empty channel only), and mov-text

Valid outputs
     * include: mov-text

Elastic Transcoder supports a maximum of
     * one embedded format per output.

Sidecar: Sidecar captions
     * are kept in a separate metadata file from the audio and video data. Sidecar
     * captions require a player that is capable of understanding the relationship
     * between the video file and the sidecar file. Elastic Transcoder supports only
     * one sidecar caption per language, to a maximum of 20 sidecar captions per
     * file.

Valid input values include: dfxp (first div element
     * only), ebu-tt, scc, smpt,
     * srt, ttml (first div element only), and
     * webvtt

Valid outputs include: dfxp (first div
     * element only), scc, srt, and
     * webvtt.

 If you want ttml or smpte-tt compatible
     * captions, specify dfxp as your output format.

Elastic Transcoder does not
     * support OCR (Optical Character Recognition), does not accept pictures as a valid
     * input for captions, and is not available for audio-only transcoding. Elastic
     * Transcoder does not preserve text formatting (for example, italics) during the
     * transcoding process.

To remove captions or leave the captions empty, set
     * Captions to null. To pass through existing captions unchanged, set
     * the MergePolicy to MergeRetain, and pass in a null
     * CaptionSources array.

For more information on embedded
     * files, see the Subtitles Wikipedia page.

For more information on sidecar
     * files, see the Extensible Metadata Platform and Sidecar file Wikipedia
     * pages.

     */
    inline const Captions& GetCaptions() const{ return m_captions; }

    /**
     *
You can configure Elastic Transcoder to transcode captions, or subtitles,
     * from one format to another. All captions must be in UTF-8. Elastic Transcoder
     * supports two types of captions:

Embedded: Embedded
     * captions are included in the same file as the audio and video. Elastic
     * Transcoder supports only one embedded caption per language, to a maximum of 300
     * embedded captions per file.

Valid input values include: CEA-608
     * (EIA-608, first non-empty channel only), CEA-708 (EIA-708,
     * first non-empty channel only), and mov-text

Valid outputs
     * include: mov-text

Elastic Transcoder supports a maximum of
     * one embedded format per output.

Sidecar: Sidecar captions
     * are kept in a separate metadata file from the audio and video data. Sidecar
     * captions require a player that is capable of understanding the relationship
     * between the video file and the sidecar file. Elastic Transcoder supports only
     * one sidecar caption per language, to a maximum of 20 sidecar captions per
     * file.

Valid input values include: dfxp (first div element
     * only), ebu-tt, scc, smpt,
     * srt, ttml (first div element only), and
     * webvtt

Valid outputs include: dfxp (first div
     * element only), scc, srt, and
     * webvtt.

 If you want ttml or smpte-tt compatible
     * captions, specify dfxp as your output format.

Elastic Transcoder does not
     * support OCR (Optical Character Recognition), does not accept pictures as a valid
     * input for captions, and is not available for audio-only transcoding. Elastic
     * Transcoder does not preserve text formatting (for example, italics) during the
     * transcoding process.

To remove captions or leave the captions empty, set
     * Captions to null. To pass through existing captions unchanged, set
     * the MergePolicy to MergeRetain, and pass in a null
     * CaptionSources array.

For more information on embedded
     * files, see the Subtitles Wikipedia page.

For more information on sidecar
     * files, see the Extensible Metadata Platform and Sidecar file Wikipedia
     * pages.

     */
    inline void SetCaptions(const Captions& value) { m_captionsHasBeenSet = true; m_captions = value; }

    /**
     *
You can configure Elastic Transcoder to transcode captions, or subtitles,
     * from one format to another. All captions must be in UTF-8. Elastic Transcoder
     * supports two types of captions:

Embedded: Embedded
     * captions are included in the same file as the audio and video. Elastic
     * Transcoder supports only one embedded caption per language, to a maximum of 300
     * embedded captions per file.

Valid input values include: CEA-608
     * (EIA-608, first non-empty channel only), CEA-708 (EIA-708,
     * first non-empty channel only), and mov-text

Valid outputs
     * include: mov-text

Elastic Transcoder supports a maximum of
     * one embedded format per output.

Sidecar: Sidecar captions
     * are kept in a separate metadata file from the audio and video data. Sidecar
     * captions require a player that is capable of understanding the relationship
     * between the video file and the sidecar file. Elastic Transcoder supports only
     * one sidecar caption per language, to a maximum of 20 sidecar captions per
     * file.

Valid input values include: dfxp (first div element
     * only), ebu-tt, scc, smpt,
     * srt, ttml (first div element only), and
     * webvtt

Valid outputs include: dfxp (first div
     * element only), scc, srt, and
     * webvtt.

 If you want ttml or smpte-tt compatible
     * captions, specify dfxp as your output format.

Elastic Transcoder does not
     * support OCR (Optical Character Recognition), does not accept pictures as a valid
     * input for captions, and is not available for audio-only transcoding. Elastic
     * Transcoder does not preserve text formatting (for example, italics) during the
     * transcoding process.

To remove captions or leave the captions empty, set
     * Captions to null. To pass through existing captions unchanged, set
     * the MergePolicy to MergeRetain, and pass in a null
     * CaptionSources array.

For more information on embedded
     * files, see the Subtitles Wikipedia page.

For more information on sidecar
     * files, see the Extensible Metadata Platform and Sidecar file Wikipedia
     * pages.

     */
    inline void SetCaptions(Captions&& value) { m_captionsHasBeenSet = true; m_captions = value; }

    /**
     *
You can configure Elastic Transcoder to transcode captions, or subtitles,
     * from one format to another. All captions must be in UTF-8. Elastic Transcoder
     * supports two types of captions:

Embedded: Embedded
     * captions are included in the same file as the audio and video. Elastic
     * Transcoder supports only one embedded caption per language, to a maximum of 300
     * embedded captions per file.

Valid input values include: CEA-608
     * (EIA-608, first non-empty channel only), CEA-708 (EIA-708,
     * first non-empty channel only), and mov-text

Valid outputs
     * include: mov-text

Elastic Transcoder supports a maximum of
     * one embedded format per output.

Sidecar: Sidecar captions
     * are kept in a separate metadata file from the audio and video data. Sidecar
     * captions require a player that is capable of understanding the relationship
     * between the video file and the sidecar file. Elastic Transcoder supports only
     * one sidecar caption per language, to a maximum of 20 sidecar captions per
     * file.

Valid input values include: dfxp (first div element
     * only), ebu-tt, scc, smpt,
     * srt, ttml (first div element only), and
     * webvtt

Valid outputs include: dfxp (first div
     * element only), scc, srt, and
     * webvtt.

 If you want ttml or smpte-tt compatible
     * captions, specify dfxp as your output format.

Elastic Transcoder does not
     * support OCR (Optical Character Recognition), does not accept pictures as a valid
     * input for captions, and is not available for audio-only transcoding. Elastic
     * Transcoder does not preserve text formatting (for example, italics) during the
     * transcoding process.

To remove captions or leave the captions empty, set
     * Captions to null. To pass through existing captions unchanged, set
     * the MergePolicy to MergeRetain, and pass in a null
     * CaptionSources array.

For more information on embedded
     * files, see the Subtitles Wikipedia page.

For more information on sidecar
     * files, see the Extensible Metadata Platform and Sidecar file Wikipedia
     * pages.

     */
    inline JobOutput& WithCaptions(const Captions& value) { SetCaptions(value); return *this;}

    /**
     *
You can configure Elastic Transcoder to transcode captions, or subtitles,
     * from one format to another. All captions must be in UTF-8. Elastic Transcoder
     * supports two types of captions:

Embedded: Embedded
     * captions are included in the same file as the audio and video. Elastic
     * Transcoder supports only one embedded caption per language, to a maximum of 300
     * embedded captions per file.

Valid input values include: CEA-608
     * (EIA-608, first non-empty channel only), CEA-708 (EIA-708,
     * first non-empty channel only), and mov-text

Valid outputs
     * include: mov-text

Elastic Transcoder supports a maximum of
     * one embedded format per output.

Sidecar: Sidecar captions
     * are kept in a separate metadata file from the audio and video data. Sidecar
     * captions require a player that is capable of understanding the relationship
     * between the video file and the sidecar file. Elastic Transcoder supports only
     * one sidecar caption per language, to a maximum of 20 sidecar captions per
     * file.

Valid input values include: dfxp (first div element
     * only), ebu-tt, scc, smpt,
     * srt, ttml (first div element only), and
     * webvtt

Valid outputs include: dfxp (first div
     * element only), scc, srt, and
     * webvtt.

 If you want ttml or smpte-tt compatible
     * captions, specify dfxp as your output format.

Elastic Transcoder does not
     * support OCR (Optical Character Recognition), does not accept pictures as a valid
     * input for captions, and is not available for audio-only transcoding. Elastic
     * Transcoder does not preserve text formatting (for example, italics) during the
     * transcoding process.

To remove captions or leave the captions empty, set
     * Captions to null. To pass through existing captions unchanged, set
     * the MergePolicy to MergeRetain, and pass in a null
     * CaptionSources array.

For more information on embedded
     * files, see the Subtitles Wikipedia page.

For more information on sidecar
     * files, see the Extensible Metadata Platform and Sidecar file Wikipedia
     * pages.

     */
    inline JobOutput& WithCaptions(Captions&& value) { SetCaptions(value); return *this;}

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your output files. If you choose to use encryption, you must specify a mode to
     * use. If you choose not to use encryption, Elastic Transcoder will write an
     * unencrypted file to your Amazon S3 bucket.

     */
    inline const Encryption& GetEncryption() const{ return m_encryption; }

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your output files. If you choose to use encryption, you must specify a mode to
     * use. If you choose not to use encryption, Elastic Transcoder will write an
     * unencrypted file to your Amazon S3 bucket.

     */
    inline void SetEncryption(const Encryption& value) { m_encryptionHasBeenSet = true; m_encryption = value; }

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your output files. If you choose to use encryption, you must specify a mode to
     * use. If you choose not to use encryption, Elastic Transcoder will write an
     * unencrypted file to your Amazon S3 bucket.

     */
    inline void SetEncryption(Encryption&& value) { m_encryptionHasBeenSet = true; m_encryption = value; }

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your output files. If you choose to use encryption, you must specify a mode to
     * use. If you choose not to use encryption, Elastic Transcoder will write an
     * unencrypted file to your Amazon S3 bucket.

     */
    inline JobOutput& WithEncryption(const Encryption& value) { SetEncryption(value); return *this;}

    /**
     *
The encryption settings, if any, that you want Elastic Transcoder to apply to
     * your output files. If you choose to use encryption, you must specify a mode to
     * use. If you choose not to use encryption, Elastic Transcoder will write an
     * unencrypted file to your Amazon S3 bucket.

     */
    inline JobOutput& WithEncryption(Encryption&& value) { SetEncryption(value); return *this;}

    /**
     *
If Elastic Transcoder used a preset with a
     * ColorSpaceConversionMode to transcode the output file, the
     * AppliedColorSpaceConversion parameter shows the conversion used. If
     * no ColorSpaceConversionMode was defined in the preset, this
     * parameter will not be included in the job response.

     */
    inline const Aws::String& GetAppliedColorSpaceConversion() const{ return m_appliedColorSpaceConversion; }

    /**
     *
If Elastic Transcoder used a preset with a
     * ColorSpaceConversionMode to transcode the output file, the
     * AppliedColorSpaceConversion parameter shows the conversion used. If
     * no ColorSpaceConversionMode was defined in the preset, this
     * parameter will not be included in the job response.

     */
    inline void SetAppliedColorSpaceConversion(const Aws::String& value) { m_appliedColorSpaceConversionHasBeenSet = true; m_appliedColorSpaceConversion = value; }

    /**
     *
If Elastic Transcoder used a preset with a
     * ColorSpaceConversionMode to transcode the output file, the
     * AppliedColorSpaceConversion parameter shows the conversion used. If
     * no ColorSpaceConversionMode was defined in the preset, this
     * parameter will not be included in the job response.

     */
    inline void SetAppliedColorSpaceConversion(Aws::String&& value) { m_appliedColorSpaceConversionHasBeenSet = true; m_appliedColorSpaceConversion = value; }

    /**
     *
If Elastic Transcoder used a preset with a
     * ColorSpaceConversionMode to transcode the output file, the
     * AppliedColorSpaceConversion parameter shows the conversion used. If
     * no ColorSpaceConversionMode was defined in the preset, this
     * parameter will not be included in the job response.

     */
    inline void SetAppliedColorSpaceConversion(const char* value) { m_appliedColorSpaceConversionHasBeenSet = true; m_appliedColorSpaceConversion.assign(value); }

    /**
     *
If Elastic Transcoder used a preset with a
     * ColorSpaceConversionMode to transcode the output file, the
     * AppliedColorSpaceConversion parameter shows the conversion used. If
     * no ColorSpaceConversionMode was defined in the preset, this
     * parameter will not be included in the job response.

     */
    inline JobOutput& WithAppliedColorSpaceConversion(const Aws::String& value) { SetAppliedColorSpaceConversion(value); return *this;}

    /**
     *
If Elastic Transcoder used a preset with a
     * ColorSpaceConversionMode to transcode the output file, the
     * AppliedColorSpaceConversion parameter shows the conversion used. If
     * no ColorSpaceConversionMode was defined in the preset, this
     * parameter will not be included in the job response.

     */
    inline JobOutput& WithAppliedColorSpaceConversion(Aws::String&& value) { SetAppliedColorSpaceConversion(value); return *this;}

    /**
     *
If Elastic Transcoder used a preset with a
     * ColorSpaceConversionMode to transcode the output file, the
     * AppliedColorSpaceConversion parameter shows the conversion used. If
     * no ColorSpaceConversionMode was defined in the preset, this
     * parameter will not be included in the job response.

     */
    inline JobOutput& WithAppliedColorSpaceConversion(const char* value) { SetAppliedColorSpaceConversion(value); return *this;}

  private:
    Aws::String m_id;
    bool m_idHasBeenSet;
    Aws::String m_key;
    bool m_keyHasBeenSet;
    Aws::String m_thumbnailPattern;
    bool m_thumbnailPatternHasBeenSet;
    Encryption m_thumbnailEncryption;
    bool m_thumbnailEncryptionHasBeenSet;
    Aws::String m_rotate;
    bool m_rotateHasBeenSet;
    Aws::String m_presetId;
    bool m_presetIdHasBeenSet;
    Aws::String m_segmentDuration;
    bool m_segmentDurationHasBeenSet;
    Aws::String m_status;
    bool m_statusHasBeenSet;
    Aws::String m_statusDetail;
    bool m_statusDetailHasBeenSet;
    long long m_duration;
    bool m_durationHasBeenSet;
    int m_width;
    bool m_widthHasBeenSet;
    int m_height;
    bool m_heightHasBeenSet;
    Aws::String m_frameRate;
    bool m_frameRateHasBeenSet;
    long long m_fileSize;
    bool m_fileSizeHasBeenSet;
    long long m_durationMillis;
    bool m_durationMillisHasBeenSet;
    Aws::Vector<JobWatermark> m_watermarks;
    bool m_watermarksHasBeenSet;
    JobAlbumArt m_albumArt;
    bool m_albumArtHasBeenSet;
    Aws::Vector<Clip> m_composition;
    bool m_compositionHasBeenSet;
    Captions m_captions;
    bool m_captionsHasBeenSet;
    Encryption m_encryption;
    bool m_encryptionHasBeenSet;
    Aws::String m_appliedColorSpaceConversion;
    bool m_appliedColorSpaceConversionHasBeenSet;
  };

} // namespace Model
} // namespace ElasticTranscoder
} // namespace Aws


text:
from __future__ import absolute_import

import pymongo

class DbResultSet(object):
  """
  Wrapper for lazy evaluation of MongoDB result sets.
  """
  _has_limit = False
  _has_skip = False
  _only_fields = None

  def __init__(self, document, spec, cursor = None):
    """
    Class constructor.

    @param document: The document class
    @param spec: Filter specification
    @param cursor: Optional existing cursor
    """
    self.document = document
    self._only_fields = set()

    if cursor is not None:
      self.spec = spec
      self.query = cursor
    else:
      self.spec = self._parse_spec(spec)
      self.query = document._meta.collection.find(self.spec)

  def _parse_spec(self, spec):
    """
    Parse and transform a query specification.
    """
    operators = ('ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin', 'mod', 'all', 'size', 'exists', 'not')

    new_spec = {}
    for key, value in spec.iteritems():
      elements = key.split('__')
      op = None
      if elements[-1] in operators:
        op = elements.pop()

      field_spec, last_field = self.document._meta.resolve_subfield_hierarchy(elements, get_field = True)
      if last_field is not None:
        # TODO value should be properly prepared
        value = last_field.to_query(value)

      # TODO

      if op is not None:
        value = { "$%s" % op : value }

      new_spec[".".join(field_spec)] = value

    return new_spec

  def limit(self, limit):
    """
    Limits this result set to some amount of entries.

    @param limit: Number of entries to limit to
    """
    if limit is None:
      return self

    self.query = self.query.limit(limit)
    self._has_limit = True
    return self

  def skip(self, skip):
    """
    Skips the first entries of this result set.

    @param skip: Number of entries to skip
    """
    self.query = self.query.skip(skip)
    self._has_skip = True
    return self

  def count(self):
    """
    Returns the number of documents returned by this query.
    """
    return self.query.count(with_limit_and_skip = True)

  def _parse_order_spec(self, spec):
    """
    Converts string-based sort order specification into one that
    can be used directly by pymongo.
    """
    if not isinstance(spec, (list, tuple)):
      spec = [spec]

    res = []
    for field in spec:
      direction = pymongo.ASCENDING
      if field.startswith('-'):
        direction = pymongo.DESCENDING
        field = field[1:]

      field = self.document._meta.get_field_by_name(field).db_name
      res.append((field, direction))

    return res

  def order_by(self, *fields):
    """
    Orders the result set by a specific field or fields.
    """
    self.query = self.query.sort(self._parse_order_spec(fields))
    return self

  def all(self):
    """
    Clones this result set and returns it.
    """
    rs = DbResultSet(self.model, self.spec, self.query.clone())
    rs._has_limit = self._has_limit
    rs._has_skip = self._has_skip
    rs._only_fields = self._only_fields
    return rs

  def one(self):
    """
    Returns a single document.
    """
    try:
      return self[0]
    except IndexError:
      raise self.document.DoesNotExist

  def only(self, *fields):
    """
    Selects a subset of fields to be fetched.
    """
    for field in fields:
      path = ".".join(self.document._meta.resolve_subfield_hierarchy(field.split(".")))
      self._only_fields.add(path)
      if self.query._Cursor__fields is None:
        # Identifier and version fields must always be included
        self.query._Cursor__fields = { "_id" : 1, "_version" : 1 }

      self.query._Cursor__fields.update({ path : 1 })

    return self

  def ids(self):
    """
    Limits the result to only return identifiers instead of documents.
    """
    return (x["_id"] for x in self.document._meta.collection.find(self.spec, fields = ("_id",)))

  def _to_document(self, document):
    """
    Converts a pymongo document dictionary into a valid document object
    instance.

    @param document: Document dictionary
    """
    obj = self.document()
    obj._set_from_db(document)
    return obj

  def __len__(self):
    """
    An alias for count().
    """
    return self.count()

  def __getitem__(self, key):
    """
    Evaluates this result set and returns the specified item.
    """
    if isinstance(key, slice):
      return [self._to_document(x) for x in self.query[key]]
    elif isinstance(key, int):
      return self._to_document(self.query[key])
    else:
      raise TypeError("Indices must be integers or slices!")

  def __iter__(self):
    """
    Evaluates this result set.
    """
    for document in self.query:
      yield self._to_document(document)

class SearchResultSet(object):
  """
  Wrapper for Elastic Search result sets.
  """
  def __init__(self, document, query):
    """
    Class constructor.

    @param document: Document class
    @param query: A valid pyes.Query
    """
    self._document = document
    self._query = query
    self._offset = None
    self._limit = None
    self._min_score = None
    self._order = None
    self._highlight = None
    self._evaluated = False
    self._results = None
    self._only_fields = set()

  def all(self):
    """
    Clones this result set.
    """
    rs = SearchResultSet(self._document, self._query)
    rs._offset = self._offset
    rs._limit = self._limit
    rs._min_score = self._min_score
    rs._highlight = self._highlight
    rs._order = self._order
    rs._evaluated = self._evaluated
    rs._results = self._results
    rs._only_fields = self._only_fields
    return rs

  def _evaluate(self):
    """
    Evaluates this result set if it hasn't yet been evaluated.
    """
    if not self._evaluated:
      query = { 'query' : self._query.serialize() }
      if self._min_score is not None:
        query['min_score'] = self._min_score
      if self._highlight is not None:
        query['highlight'] = self._highlight
      if self._order is not None:
        query['sort'] = self._order

      params = {}
      if self._offset is not None:
        params['from'] = int(self._offset)
      if self._limit is not None:
        params['size'] = int(self._limit)
      if self._only_fields:
        params['fields'] = ",".join(self._only_fields)

      self._results = self._document._meta.search_engine.search(
        query,
        **params
      )
      self._evaluated = True

    return self._results

  def limit(self, limit):
    """
    Limits this result set to some amount of entries.

    @param limit: Number of entries to limit to
    """
    self._evaluated = False
    self._limit = limit
    return self

  def skip(self, skip):
    """
    Skips the first entries of this result set.

    @param skip: Number of entries to skip
    """
    self._evaluated = False
    self._offset = skip
    return self

  def only(self, *fields):
    """
    Selects a subset of fields to be fetched.
    """
    for field in fields:
      self._only_fields.add(field)

    return self

  def min_score(self, score):
    """
    Sets up the minimum score for the documents to be included in the result
    set.

    @param score: Minimum score
    """
    self._evaluated = False
    self._min_score = score
    return self

  def highlight(self, **highlight):
    """
    Sets up the highlight descriptor.
    """
    self._evaluated = False
    self._highlight = highlight
    return self

  def order_by(self, *fields):
    """
    Orders the result set by a specific field or fields.
    """
    self._evaluated = False
    if self._order is None:
      self._order = []

    for field in fields:
      direction = "asc"
      if field.startswith('-'):
        direction = "desc"
        field = field[1:]

      self._order.append({ field : direction })

    return self

  @property
  def total(self):
    """
    Returns the total number of hits.
    """
    return self._evaluate()['hits']['total']

  def _to_document(self, hit):
    """
    Converts a search result into a document.
    """
    obj = self._document()
    if '_source' in hit:
      obj._set_from_search(hit['_source'], hit.get('highlight'))
    else:
      hit['fields'][self._document._meta.get_primary_key_field().name] = hit['_id']
      obj._set_from_search(hit['fields'], hit.get('highlight'))
    return obj

  def __iter__(self):
    """
    Iterates over the results.
    """
    for hit in self._evaluate()['hits']['hits']:
      yield self._to_document(hit)

redpajama_set_name: RedPajamaGithub


text:
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>Jennifer Yaya</title>
    <meta name="viewport" content="width=device,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,minimal-ui">
    <meta name="handheldfriendly" content="true">
    <meta name="mobileoptimized" content="240">
    <meta name="description" content="A young graphic designer, Jennifer Falanga/Type and Graphic Design">
    <meta name="keywords" content="Graphic Design, Typography, Editorial Design, Book Cover, Motion Graphics, Branding, Photography, Retouching, Post Production, Creative Direction, Animation">
    <meta name="google-site-verification" content="i30pI25___Lf9BtgWv8fxU-3lF-wxq7snu89mXpFymA" />
    <link rel="stylesheet" href="css/unslider.css">
    <link href="css/grid-journal.css" rel="stylesheet">
    <link href="css/main-journal.css" rel="stylesheet">
    <link rel="shortcut icon" href="favicon.ico">
    <link href="https://fonts.googleapis.com/css?family=Yantramanav:300,400" rel="stylesheet">

      Places
      Instagram

En Route

Testing Fujifilm Velvia 50 film

        next post  /  previous post

back to home

Instagram Youtube

Copyright © 2018 Jennifer Yaya Falanga. All rights reserved.


text:
package org.apache.jena.sparql.core.mem;

public class TestTriTable extends AbstractTestTripleTable {

	TriTable testTable = new TriTable();

	@Override
	protected TripleTable table() {
		return testTable;
	}

}


text:
function vol = domainvolume(f)
%DOMAINVOLUME   Volume of the domain of a CHEBFUN3 object.
%   DOMAINVOLUME(F) returns the volume of the domain of F.

% Copyright 2016 by The University of Oxford and The Chebfun Developers.
% See http://www.chebfun.org/ for Chebfun information.

if ( isempty(f) )
    vol = 0;
else
    dom = f.domain;
    vol = diff(dom(1:2)) * diff(dom(3:4)) * diff(dom(5:6));
end

end


text:
	<button data-id="server-try">@@TRY_SERVER@@</button>
	<button data-id="client-try">@@TRY_CLIENT@@</button>
	@@CLEAR_RESULTS@@

@@RESPONSE_CODE@@

@@RESPONSE_HEADERS@@

@@RESPONSE_BODY@@


text:
'use strict';

import React     from 'react';
import TestUtils from 'react-addons-test-utils';

import Header    from '../../app/js/components/Header';

describe('Component: Header', function() {

  let rendered;
  let props;

  function renderComponent() {
    rendered = TestUtils.renderIntoDocument(
      <Header {...props} />
    );
  }

  beforeEach(function() {
    props = {};
    renderComponent();
  });

  it('should render properly', function() {
    assert.doesNotThrow(TestUtils.findRenderedDOMComponentWithTag.bind(null, rendered, 'header'));
  });

});


text:
package pr10.interfaces;

public interface Demon<T> extends Character<T> {

    String getEnergy();

    double getCalculateSpecial();
}


text:
/* TEMPLATE GENERATED TESTCASE FILE
Filename: CWE415_Double_Free__new_delete_wchar_t_54e.cpp
Label Definition File: CWE415_Double_Free__new_delete.label.xml
Template File: sources-sinks-54e.tmpl.cpp
*/
/*
 * @description
 * CWE: 415 Double Free
 * BadSource:  Allocate data using new and Deallocae data using delete
 * GoodSource: Allocate data using new
 * Sinks:
 *    GoodSink: do nothing
 *    BadSink : Deallocate data using delete
 * Flow Variant: 54 Data flow: data passed as an argument from one function through three others to a fifth; all five functions are in different source files
 *
 * */

#include "std_testcase.h"

#include <wchar.h>

namespace CWE415_Double_Free__new_delete_wchar_t_54
{

#ifndef OMITBAD

void badSink_e(wchar_t * data)
{
    /* POTENTIAL FLAW: Possibly deleting memory twice */
    delete data;
}

#endif /* OMITBAD */

#ifndef OMITGOOD

/* goodG2B uses the GoodSource with the BadSink */
void goodG2BSink_e(wchar_t * data)
{
    /* POTENTIAL FLAW: Possibly deleting memory twice */
    delete data;
}

/* goodB2G uses the BadSource with the GoodSink */
void goodB2GSink_e(wchar_t * data)
{
    /* do nothing */
    /* FIX: Don't attempt to delete the memory */
    ; /* empty statement needed for some flow variants */
}

#endif /* OMITGOOD */

} /* close namespace */


text:
using System;
using System.Linq;

using AutoMapper;

using Glimpse.Core.Extensibility;
using Glimpse.Core.Tab.Assist;

namespace Glimpse.AutoMapper
{
    public class AutoMapperTab : TabBase
    {
        private static readonly string[] Headers = { "Profile", "Type Map" };

        private readonly IConfigurationProvider _configuration;

        public AutoMapperTab()
            : this(Mapper.Configuration)
        {
        }

        public AutoMapperTab(IConfigurationProvider configuration)
        {
            this._configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
        }

        public override string Name => "AutoMapper";

        public override object GetData(ITabContext context)
        {
            var plugin = Plugin.Create(Headers);

            TypeMap[] typeMaps = this._configuration.GetAllTypeMaps();
            foreach (var profileName in typeMaps.Select(map => map.Profile.Name).Distinct())
            {
                var typeMapSection = new TypeMapTabSection(this._configuration, profileName);
                plugin.AddRow().Column(profileName).Column(typeMapSection);
            }

            return plugin;
        }
    }
}


text:
from setuptools import setup, find_packages

from accounts import VERSION

setup(name='django-oscar-accounts',
      version=VERSION,
      author="David Winterbottom",
      author_email="david.winterbottom@tangentlabs.co.uk",
      description="Managed accounts for django-oscar",
      long_description=open('README.md').read(),
      license=open('LICENSE').read(),
      packages=find_packages(exclude=['sandbox*', 'tests*']),
      include_package_data=True,
      # See http://pypi.python.org/pypi?%3Aaction=list_classifiers
      classifiers=[
          'Development Status :: 4 - Beta',
          'Environment :: Web Environment',
          'Framework :: Django',
          'Intended Audience :: Developers',
          'License :: OSI Approved :: BSD License',
          'Operating System :: Unix',
          'Programming Language :: Python'],
      install_requires=['django-oscar>=0.5',
                        'python-dateutil>=2.1,<2.2'])


text:
package org.apache.reef.driver.parameters;

import org.apache.reef.driver.task.SuspendedTask;
import org.apache.reef.tang.annotations.Name;
import org.apache.reef.tang.annotations.NamedParameter;
import org.apache.reef.wake.EventHandler;

import java.util.Set;

/**
 * Suspended task handler.
 */
@NamedParameter(doc = "Suspended task handler.")
public final class ServiceTaskSuspendedHandlers implements Name<Set<EventHandler<SuspendedTask>>> {
  private ServiceTaskSuspendedHandlers() {
  }
}


text:
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Microsoft.VisualStudio.Shell;
using System;
using System.Diagnostics;
using System.IO;
using System.Text;

namespace IceBuilder
{
    public class BuildLogger : Logger
    {
        private int Indent { get; set; }
        private int IndentLevel { get; set; }
        private EnvDTE.OutputWindowPane OutputPane { get; set; }
        private Stopwatch Stopwatch { get; set; }

        public BuildLogger(EnvDTE.OutputWindowPane outputPane)
        {
            OutputPane = outputPane;
            IndentLevel = 2;
        }

        public override void Initialize(IEventSource eventSource)
        {
            eventSource.ProjectStarted += new ProjectStartedEventHandler(EventSource_ProjectStarted);
            eventSource.ProjectFinished += new ProjectFinishedEventHandler(EventSource_ProjectFinished);

            eventSource.TargetStarted += new TargetStartedEventHandler(EventSource_TargetStarted);
            eventSource.TargetFinished += new TargetFinishedEventHandler(EventSource_TargetFinished);

            eventSource.MessageRaised += new BuildMessageEventHandler(EventSource_MessageRaised);
            eventSource.WarningRaised += new BuildWarningEventHandler(EventSource_WarningRaised);
            eventSource.ErrorRaised += new BuildErrorEventHandler(EventSource_ErrorRaised);
        }

        void EventSource_ProjectStarted(object sender, ProjectStartedEventArgs e)
        {
            Stopwatch = Stopwatch.StartNew();
            WriteMessage(string.Format("Build started {0}.", DateTime.Now));
        }

        void EventSource_ProjectFinished(object sender, ProjectFinishedEventArgs e)
        {
            Stopwatch.Stop();
            WriteMessage(string.Format("\nBuild {0}.", e.Succeeded ? "succeeded" : "FAILED"));
            WriteMessage(string.Format("Time Elapsed {0:00}:{1:00}:{2:00}.{3:00}",
                Stopwatch.Elapsed.Hours,
                Stopwatch.Elapsed.Minutes,
                Stopwatch.Elapsed.Seconds,
                Stopwatch.Elapsed.Milliseconds));
            Stopwatch = null;
        }

        public void EventSource_TargetStarted(object sender, TargetStartedEventArgs e)
        {
            if (e.TargetName.Equals("SliceCompile") || IsVerbosityAtLeast(LoggerVerbosity.Detailed))
            {
                WriteMessage(string.Format("{0}:", e.TargetName));
            }
            Indent += IndentLevel;
        }

        public void EventSource_TargetFinished(object sender, TargetFinishedEventArgs e) => Indent -= IndentLevel;

        public void EventSource_MessageRaised(object sender, BuildMessageEventArgs e)
        {
            if ((e.Importance == MessageImportance.High && IsVerbosityAtLeast(LoggerVerbosity.Minimal)) ||
                (e.Importance == MessageImportance.Normal && IsVerbosityAtLeast(LoggerVerbosity.Normal)) ||
                (e.Importance == MessageImportance.Low && IsVerbosityAtLeast(LoggerVerbosity.Detailed)))
            {
                WriteMessage(e.Message);
            }
        }

        public void WriteMessage(string message)
        {
            ThreadHelper.JoinableTaskFactory.Run(async () =>
            {
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
                StringBuilder s = new StringBuilder();
                for (int i = 0; i < Indent; ++i)
                {
                    s.Append(" ");
                }
                s.AppendLine(message);

                OutputPane.Activate();
                OutputPane.OutputString(s.ToString());
            });
        }

        private void OutputTaskItem(
            string message,
            EnvDTE.vsTaskPriority priority,
            string file,
            int line,
            string description)
        {
            ThreadHelper.JoinableTaskFactory.Run(async () =>
                {
                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
                    OutputPane.Activate();
                    OutputPane.OutputTaskItemString(
                        message,
                        priority,
                        EnvDTE.vsTaskCategories.vsTaskCategoryBuildCompile,
                        EnvDTE.vsTaskIcon.vsTaskIconCompile,
                        file,
                        line,
                        description,
                        true);
                });
        }

        void EventSource_WarningRaised(object sender, BuildWarningEventArgs e) =>
            OutputTaskItem(
                $"{Path.Combine(Path.GetDirectoryName(e.ProjectFile), e.File)}({e.LineNumber}: warning : {e.Message}",
                EnvDTE.vsTaskPriority.vsTaskPriorityMedium,
                e.File,
                e.LineNumber,
                e.Message);

        void EventSource_ErrorRaised(object sender, BuildErrorEventArgs e) =>
            OutputTaskItem(
                $"{Path.Combine(Path.GetDirectoryName(e.ProjectFile), e.File)}({e.LineNumber}): error : {e.Message}",
                EnvDTE.vsTaskPriority.vsTaskPriorityHigh,
                e.File,
                e.LineNumber,
                e.Message);

        public override void Shutdown()
        {
        }
    }
}