package RPS::Import::INGroovesBase;

use strict;

use Date::Calc qw(Days_in_Month Add_Delta_Days Decode_Month);
use Data::Dumper;

use lib '/app/tools/common/lib';
use Common::Country;

use lib '/app/tools/data_classes/lib';

use lib '/app/tools/rps/lib';
use RPS::File::Sale;
use RPS::Import::Importer;
use base 'RPS::Import::Importer';

my %gServiceFormatMap = (
    '24-7 retail sales' => {
        service => Client::Service::DSP_247,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        }
    },
    '24-7 download retail sales' => {
        service => Client::Service::DSP_247,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        }
    },
    '24-7 subscription download retail sales' => {
        service => Client::Service::DSP_247,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '24-7 subscription renewal download retail sales' => {
        service => Client::Service::DSP_247,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '24-7 subscription retail sales' => {
        service => Client::Service::DSP_247,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '24-7 subscription stream retail sales' => {
        service => Client::Service::DSP_247,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '24-7 subscription tethered download retail sales' => {
        service => Client::Service::DSP_247,
        'track' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '24-7 stream retail sales' => {
        service => Client::Service::DSP_247,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '7digital retail sales' => {
        service => Client::Service::DSP_7DIGITAL,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '7digl retail sales' => {
        service => Client::Service::DSP_7DIGITAL,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    '9 squared mst retail sales' => {
        service          => Client::Service::DSP_NINESQUARED,
        'music ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'ringback' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },

    'amazon retail sales' => {
        service => Client::Service::DSP_AMAZON,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'amie street retail sales' => {
        service => Client::Service::DSP_AMIESTREET,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'amie street stream retail sales' => {
        service => Client::Service::DSP_AMIESTREET,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'aspiro retail sales' => {
        service => Client::Service::DSP_ASPIRO,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'att retail sales' => {
        service => Client::Service::DSP_ATT,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'audiojelly retail sales' => {
        service => Client::Service::DSP_AUDIOJELLY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'basepoint media retail sales' => {
        service => Client::Service::DSP_BASEPOINT_MEDIA,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'beat port download retail sales' => {
        service => Client::Service::DSP_BEATPORT,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'beat port retail sales' => {
        service => Client::Service::DSP_BEATPORT,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'boomkat retail sales' => {
        service => Client::Service::DSP_BOOMKAT,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'clear channel stream retail sales' => {
        service => Client::Service::DSP_CLEARCHANNEL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'cricket muve music retail sales' => {
        service    => Client::Service::DSP_CRICKET,
        'ringback' => {
            format       => RPS::File::Sale::FORMAT_RINGBACK,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'deezer stream retail sales' => {
        service => Client::Service::DSP_DEEZER,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'deezer retail sales' => {
        service => Client::Service::DSP_DEEZER,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'djtunes retail sales' => {
        service => Client::Service::DSP_DJTUNES,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'emusic subscription download retail sales' => {
        service => Client::Service::DSP_EMUSIC,
        'album' => {
            format       => RPS::File::Sale::FORMAT_VPD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_VPD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_VPD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'fnac a la carte retail sales' => {
        service => Client::Service::DSP_FNAC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'fnac retail sales' => {
        service => Client::Service::DSP_FNAC,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'google music retail sales' => {
        service => Client::Service::DSP_GOOGLE,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'groove mobile retail sales' => {
        service => Client::Service::DSP_GROOVEMOBILE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'guvera download retail sales' => {
        service => Client::Service::DSP_GUVERA,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'guvera stream retail sales' => {
        service => Client::Service::DSP_GUVERA,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'hellojunenet retail sales' => {
        service => Client::Service::DSP_HELLOJUNENET,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'hudson retail sales' => {
        service    => Client::Service::DSP_HUDSON,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'imimobile retail sales' => {
        service => Client::Service::DSP_IMI_MOBILE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'inprodicon retail sales' => {
        service => Client::Service::DSP_INPRODICON,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'imusica retail sales' => {
        service => Client::Service::DSP_IMUSICA,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'itunes retail sales' => {
        service => Client::Service::DSP_ITUNES,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album upgrade' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track upgrade' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
        'user generated ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video upgrade' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
        'audio video bundle' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
        'high quality audio album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'jamster mst retail sales' => {
        service    => Client::Service::DSP_JAMSTER,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'junketboy retail sales' => {
        service => Client::Service::DSP_JUNKETBOY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'junodigital retail sales' => {
        service => Client::Service::DSP_JUNO,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'junodigl retail sales' => {
        service => Client::Service::DSP_JUNO,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'lala download retail sales' => {
        service => Client::Service::DSP_LALA,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'lala stream retail sales' => {
        service => Client::Service::DSP_LALA,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'lastfm a la carte stream retail sales' => {
        service => Client::Service::DSP_LASTFM,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'lastfm ad supported stream retail sales' => {
        service => Client::Service::DSP_LASTFM,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'lastfm subscription stream retail sales' => {
        service => Client::Service::DSP_LASTFM,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'liquid retail sales' => {
        service => Client::Service::DSP_LIQUID,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'media net download retail sales' => {
        service => Client::Service::DSP_MEDIANET,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'media net subscription stream retail sales' => {
        service => Client::Service::DSP_MEDIANET,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'mflow download retail sales' => {
        service => Client::Service::DSP_MFLOW,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'mflow stream retail sales' => {
        service => Client::Service::DSP_MFLOW,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'mobile streams retail sales' => {
        service    => Client::Service::DSP_MOBILESTREAMS,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'moderati mst retail sales' => {
        service    => Client::Service::DSP_MODERATI,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'musicload retail sales' => {
        service => Client::Service::DSP_MUSICLOAD,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'musiwave download retail sales' => {
        service => Client::Service::DSP_MUSIWAVE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'musiwave retail sales' => {
        service => Client::Service::DSP_MUSIWAVE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'musiwave stream retail sales' => {
        service => Client::Service::DSP_MUSIWAVE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'musiwave subscription stream retail sales' => {
        service => Client::Service::DSP_MUSIWAVE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'myspace ad supported stream retail sales' => {
        service => Client::Service::DSP_MYSPACE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'myxer download retail sales' => {
        service    => Client::Service::DSP_MYXER,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'napster ad supported stream retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'napster burn retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'album' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'napster download retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'napster kiosk retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'album' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'napster subscription client retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'napster subscription device retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'napster subscription portable retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'napster subscription stream retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'napster tethered download retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        'album' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_TETHERED,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'nextel boost retail sales' => {
        service => Client::Service::DSP_NEXTEL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'nmusic download retail sales' => {
        service => Client::Service::DSP_NMUSIC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'nmusic retail sales' => {
        service => Client::Service::DSP_NMUSIC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'nmusic stream retail sales' => {
        service => Client::Service::DSP_NMUSIC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'nokia download retail sales' => {
        service => Client::Service::DSP_NOKIA,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'nokia retail sales' => {
        service => Client::Service::DSP_NOKIA,
        'album' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'nokia stream retail sales' => {
        service => Client::Service::DSP_NOKIA,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'orange retail sales' => {
        service => Client::Service::DSP_ORANGE,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'pace ad supported stream retail sales' => {
        service => Client::Service::DSP_MYSPACE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'pocket group mst retail sales' => {
        service    => Client::Service::DSP_POCKETGROUP,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'ringback' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'puretracks download retail sales' => {
        service => Client::Service::DSP_PURETRACKS,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'puretracks retail sales' => {
        service => Client::Service::DSP_PURETRACKS,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'puretracks subscription retail sales' => {
        service => Client::Service::DSP_PURETRACKS,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'rdio download retail sales' => {
        service => Client::Service::DSP_RDIO,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'rdio retail sales' => {
        service => Client::Service::DSP_RDIO,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'rdio retail sales usa' => {
        service => Client::Service::DSP_RDIO,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'rdio stream retail sales' => {
        service => Client::Service::DSP_RDIO,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'real networks international retail sales' => {
        service => Client::Service::DSP_REAL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'realnetworks retail sales' => {
        service => Client::Service::DSP_REAL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'reggae addict retail sales' => {
        service => Client::Service::DSP_REGGAE_ADDICT,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'rhapsody retail sales' => {
        service => Client::Service::DSP_REAL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'rhapsody burn retail sales' => {
        service => Client::Service::DSP_REAL,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'rhapsody stream retail sales' => {
        service => Client::Service::DSP_REAL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'rhapsody subscription stream retail sales' => {
        service => Client::Service::DSP_REAL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'ruckus tethered download retail sales' => {
        service => Client::Service::DSP_RUCKUS,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'sendme mobile mst subscription stream retail sales' => {
        service    => Client::Service::DSP_SENDME,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'sendme mobile mst stream retail sales' => {
        service    => Client::Service::DSP_SENDME,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'shockhound retail sales' => {
        service => Client::Service::DSP_SHOCKHOUND,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'sic subscription download retail sales' => {
        service => Client::Service::DSP_EMUSIC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_VPD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_VPD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'simfy on-demand retail sales' => {
        service => Client::Service::DSP_SIMFY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'simfy pre-programmed retail sales' => {
        service => Client::Service::DSP_SIMFY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'simfy retail sales' => {
        service => Client::Service::DSP_SIMFY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'slacker ad supported radio retail sales' => {
        service => Client::Service::DSP_SLACKERINC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'slacker subscription radio retail sales' => {
        service => Client::Service::DSP_SLACKERINC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'spotify download retail sales' => {
        service => Client::Service::DSP_SPOTIFY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'spotify stream retail sales' => {
        service => Client::Service::DSP_SPOTIFY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'sprint mst retail sales' => {
        service => Client::Service::DSP_SPRINT,
        'track' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'starzik retail sales' => {
        service => Client::Service::DSP_STARZIK,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'stompy retail sales' => {
        service => Client::Service::DSP_STOMPY,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'telstra (big pond) retail sales' => {
        service => Client::Service::DSP_BIGPOND,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'thumbplay mst retail sales' => {
        service    => Client::Service::DSP_THUMBPLAY,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'touchtunes jukebox retail sales' => {
        service => Client::Service::DSP_TOUCHTUNES,
        'track' => {
            format       => RPS::File::Sale::FORMAT_JUKEBOX,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'trackitdown retail sales' => {
        service => Client::Service::DSP_TRACKITDOWN,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'turntable lab retail sales' => {
        service => Client::Service::DSP_TURNTABLELAB,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'umc mobile retail sales' => {
        service => Client::Service::DSP_UMC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'verisign retail sales' => {
        service    => Client::Service::DSP_VERISIGN,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'verizon ota retail sales' => {
        service => Client::Service::DSP_VERIZON,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'verizon rbt retail sales' => {
        service => Client::Service::DSP_VERIZON,
        'track' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'vervelife retail sales' => {
        service => Client::Service::DSP_VERVELIFE,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'vevo retail sales' => {
        service => Client::Service::DSP_VEVO,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'vevo stream retail sales' => {
        service => Client::Service::DSP_VEVO,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'vidzone retail sales' => {
        service => Client::Service::DSP_VIDZONEDIGITAL,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'virgin mega retail sales' => {
        service => Client::Service::DSP_VIRGINMEGA,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'wasabeat retail sales' => {
        service => Client::Service::DSP_WASABEAT,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'we7 ad supported stream retail sales' => {
        service => Client::Service::DSP_WE7,
        'album' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_ALBUM,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'wirelessdeveloper agency download retail sales' => {
        service => Client::Service::DSP_WDA,
        'track' => {
            format       => RPS::File::Sale::FORMAT_DOWNLOAD,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'yandex retail sales' => {
        service => Client::Service::DSP_YANDEX_LLC,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },
    'youtube retail sales' => {
        service => Client::Service::DSP_YOUTUBE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'youtube stream retail sales' => {
        service => Client::Service::DSP_YOUTUBE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'video' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
        },
    },
    'fun mobility mst retail sales' => {
        service    => Client::Service::DSP_FUNMOBILITY,
        'ringtone' => {
            format       => RPS::File::Sale::FORMAT_RINGTONE,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
    },

);

my %countries = (
    'antarctica (the territory south of 60 deg s)' => 'Antarctica',
    'us virgin islands'                            => 'Virgin Islands, U.S.',
    'british virgin islands'                       => 'Virgin Islands, British',
    'european economic and monetary union'         => 'European Union',
    'kyrgyz republic'                              => 'Kyrgyzstan',
    'micronesia,federated states of'               => 'Micronesia, Federated States of',
    'micronesia'                                   => 'Micronesia, Federated States of',
);

sub _getServiceFormat {
    my ( $self, $statement, $assetType ) = @_;

    # 'statement' is really a servicename; if it has a 3-character country
    # code attached to it then remove the country code (FB16728)
    #
    $statement = $1 if ( $statement =~ m/(.*) ([A-Z]{3})$/ );

    $statement = lc $statement;
    $assetType = lc $assetType;

    my $serviceID;
    my $formatID;
    my $productType;
    my $mediaType;
    if ( exists $gServiceFormatMap{$statement}{$assetType} ) {
        $serviceID   = $gServiceFormatMap{$statement}->{service};
        $formatID    = $gServiceFormatMap{$statement}{$assetType}->{format};
        $productType = $gServiceFormatMap{$statement}{$assetType}->{product_type};
        $mediaType   = $gServiceFormatMap{$statement}{$assetType}->{media};
    } else {
        print STDERR "DEBUG:_getServiceFormat: didn't find stmt($statement)/asset($assetType) in gServiceFormatMap\n";
    }
    return ( $serviceID, $formatID, $productType, $mediaType );
}

sub _getAlternateCountryName {
    my ( $self, $name ) = @_;
    return ( exists $countries{ lc $name } ) ? $countries{ lc $name } : undef;
}

###
1;    # Play nicely.
###
