diff --git a/packages/addons/service/librespot/changelog.txt b/packages/addons/service/librespot/changelog.txt index 1259852c7a..66f706c298 100644 --- a/packages/addons/service/librespot/changelog.txt +++ b/packages/addons/service/librespot/changelog.txt @@ -1,3 +1,8 @@ +111 +- Update to 431be9e +- Fix delay with Kodi playback option +- Cache volume + 110 - Update to 685fb4e - Add kSupportsPlaylistV2 enum diff --git a/packages/addons/service/librespot/package.mk b/packages/addons/service/librespot/package.mk index d31a432a3e..6d9460b48f 100644 --- a/packages/addons/service/librespot/package.mk +++ b/packages/addons/service/librespot/package.mk @@ -18,8 +18,8 @@ ################################################################################ PKG_NAME="librespot" -PKG_VERSION="685fb4e" -PKG_REV="110" +PKG_VERSION="431be9e" +PKG_REV="111" PKG_ARCH="any" PKG_LICENSE="MIT" PKG_SITE="https://github.com/librespot-org/$PKG_NAME/" diff --git a/packages/addons/service/librespot/patches/librespot-02_kodi_hooks.patch b/packages/addons/service/librespot/patches/librespot-02_kodi_hooks.patch index d974ca8970..f66f163499 100644 --- a/packages/addons/service/librespot/patches/librespot-02_kodi_hooks.patch +++ b/packages/addons/service/librespot/patches/librespot-02_kodi_hooks.patch @@ -1,110 +1,165 @@ -From ddb20957330b2bb76c0cee85ac3514e5e136b90e Mon Sep 17 00:00:00 2001 -From: awiouy -Date: Fri, 26 Jan 2018 21:02:29 +0100 -Subject: [PATCH] kodi hooks - ---- - playback/src/player.rs | 25 +++++++++++++++++-------- - 1 file changed, 17 insertions(+), 8 deletions(-) - diff --git a/playback/src/player.rs b/playback/src/player.rs -index e549736..34e802a 100644 +index dd99423..365c108 100644 --- a/playback/src/player.rs +++ b/playback/src/player.rs -@@ -3,6 +3,7 @@ use futures::{future, Future}; - use std; - use std::borrow::Cow; - use std::io::{Read, Seek, SeekFrom, Result}; -+use std::env; - use std::mem; - use std::process::Command; - use std::sync::mpsc::{RecvError, TryRecvError, RecvTimeoutError}; -@@ -16,7 +17,7 @@ use core::spotify_id::SpotifyId; - use audio_backend::Sink; - use audio::{AudioFile, AudioDecrypt}; +@@ -17,7 +17,7 @@ use core::spotify_id::SpotifyId; + use audio::{AudioDecrypt, AudioFile}; use audio::{VorbisDecoder, VorbisPacket}; --use metadata::{FileFormat, Track, Metadata}; -+use metadata::{Artist, FileFormat, Track, Metadata}; + use audio_backend::Sink; +-use metadata::{FileFormat, Metadata, Track}; ++use metadata::{FileFormat, Metadata, Track, Artist}; use mixer::AudioFilter; pub struct Player { -@@ -274,7 +275,7 @@ impl PlayerInternal { +@@ -49,15 +49,22 @@ enum PlayerCommand { + pub enum PlayerEvent { + Started { + track_id: SpotifyId, ++ track: Track, ++ artist: Artist, ++ new_state: String, + }, - None => { - self.stop_sink(); -- self.run_onstop(); -+ info!("onstop 1"); + Changed { + old_track_id: SpotifyId, + new_track_id: SpotifyId, ++ track: Track, ++ artist: Artist, ++ new_state: String, + }, - let old_state = mem::replace(&mut self.state, PlayerState::Stopped); - old_state.signal_end_of_track(); -@@ -286,6 +287,12 @@ impl PlayerInternal { - debug!("command={:?}", cmd); - match cmd { - PlayerCommand::Load(track_id, play, position, end_of_track) => { -+ let track = Track::get(&self.session, track_id).wait().unwrap(); -+ let artist = Artist::get(&self.session, track.artists[0]).wait().unwrap(); -+ env::set_var("LS_ARTIST", artist.name); -+ env::set_var("LS_TITLE", track.name); -+ self.run_onstart(); -+ - if self.state.is_playing() { - self.stop_sink_if_running(); - } -@@ -294,7 +301,7 @@ impl PlayerInternal { - Some(decoder) => { + Stopped { + track_id: SpotifyId, ++ new_state: String, + }, + } + +@@ -404,6 +411,9 @@ impl PlayerInternal { + + match self.load_track(track_id, position as i64) { + Some((decoder, normalisation_factor)) => { ++ let track = Track::get(&self.session, track_id).wait().unwrap(); ++ let artist = Artist::get(&self.session, track.artists[0]).wait().unwrap(); ++ if play { - if !self.state.is_playing() { -- self.run_onstart(); -+ info!("onstart 1"); + match self.state { + PlayerState::Playing { +@@ -413,11 +423,20 @@ impl PlayerInternal { + | PlayerState::EndOfTrack { + track_id: old_track_id, + .. +- } => self.send_event(PlayerEvent::Changed { +- old_track_id: old_track_id, +- new_track_id: track_id, +- }), +- _ => self.send_event(PlayerEvent::Started { track_id }), ++ } => { ++ let new_state = "play".to_string(); ++ self.send_event(PlayerEvent::Changed { ++ old_track_id: old_track_id, ++ new_track_id: track_id, ++ track: track, ++ artist: artist, ++ new_state: new_state, ++ }); ++ }, ++ _ => { ++ let new_state = "play".to_string(); ++ self.send_event(PlayerEvent::Started { track_id, track, artist, new_state }); ++ }, } + self.start_sink(); - -@@ -304,7 +311,7 @@ impl PlayerInternal { - }; - } else { - if self.state.is_playing() { -- self.run_onstop(); -+ info!("onstop 2"); +@@ -443,13 +462,20 @@ impl PlayerInternal { + | PlayerState::EndOfTrack { + track_id: old_track_id, + .. +- } => self.send_event(PlayerEvent::Changed { +- old_track_id: old_track_id, +- new_track_id: track_id, +- }), ++ } => { ++ let new_state = "pause".to_string(); ++ self.send_event(PlayerEvent::Changed { ++ old_track_id: old_track_id, ++ new_track_id: track_id, ++ track: track, ++ artist: artist, ++ new_state: new_state, ++ }) ++ }, + _ => (), } - - self.state = PlayerState::Paused { -@@ -317,7 +324,7 @@ impl PlayerInternal { - None => { - let _ = end_of_track.send(()); - if self.state.is_playing() { -- self.run_onstop(); -+ info!("onstop 3"); +- self.send_event(PlayerEvent::Stopped { track_id }); ++ let new_state = "pause".to_string(); ++ self.send_event(PlayerEvent::Stopped { track_id, new_state }); } } - } -@@ -338,7 +345,7 @@ impl PlayerInternal { - if let PlayerState::Paused { .. } = self.state { + +@@ -474,7 +500,10 @@ impl PlayerInternal { + if let PlayerState::Paused { track_id, .. } = self.state { self.state.paused_to_playing(); -- self.run_onstart(); -+ info!("onstart 2"); +- self.send_event(PlayerEvent::Started { track_id }); ++ let track = Track::get(&self.session, track_id).wait().unwrap(); ++ let artist = Artist::get(&self.session, track.artists[0]).wait().unwrap(); ++ let new_state = "play".to_string(); ++ self.send_event(PlayerEvent::Started { track_id, track, artist, new_state }); self.start_sink(); } else { warn!("Player::play called from invalid state"); -@@ -350,17 +357,19 @@ impl PlayerInternal { +@@ -486,7 +515,8 @@ impl PlayerInternal { self.state.playing_to_paused(); self.stop_sink_if_running(); -- self.run_onstop(); -+ info!("onstop 4"); +- self.send_event(PlayerEvent::Stopped { track_id }); ++ let new_state = "pause".to_string(); ++ self.send_event(PlayerEvent::Stopped { track_id, new_state }); } else { warn!("Player::pause called from invalid state"); } - } - - PlayerCommand::Stop => { -+ self.run_onstop(); -+ - match self.state { - PlayerState::Playing { .. } => { - self.stop_sink_if_running(); -- self.run_onstop(); -+ info!("onstop 5"); - self.state = PlayerState::Stopped; - } - PlayerState::Paused { .. } => { +@@ -497,7 +527,8 @@ impl PlayerInternal { + | PlayerState::Paused { track_id, .. } + | PlayerState::EndOfTrack { track_id } => { + self.stop_sink_if_running(); +- self.send_event(PlayerEvent::Stopped { track_id }); ++ let new_state = "stop".to_string(); ++ self.send_event(PlayerEvent::Stopped { track_id, new_state }); + self.state = PlayerState::Stopped; + } + PlayerState::Stopped => { +diff --git a/src/player_event_handler.rs b/src/player_event_handler.rs +index b6a653d..f746c8f 100644 +--- a/src/player_event_handler.rs ++++ b/src/player_event_handler.rs +@@ -18,18 +18,28 @@ pub fn run_program_on_events(event: PlayerEvent, onevent: &str) { + PlayerEvent::Changed { + old_track_id, + new_track_id, ++ track, ++ artist, ++ new_state, + } => { + env_vars.insert("PLAYER_EVENT", "change".to_string()); + env_vars.insert("OLD_TRACK_ID", old_track_id.to_base16()); + env_vars.insert("TRACK_ID", new_track_id.to_base16()); ++ env_vars.insert("TITLE", track.name.to_string()); ++ env_vars.insert("ARTIST", artist.name.to_string()); ++ env_vars.insert("STATE", new_state.to_string()); + } +- PlayerEvent::Started { track_id } => { ++ PlayerEvent::Started { track_id, track, artist, new_state } => { + env_vars.insert("PLAYER_EVENT", "start".to_string()); + env_vars.insert("TRACK_ID", track_id.to_base16()); ++ env_vars.insert("TITLE", track.name.to_string()); ++ env_vars.insert("ARTIST", artist.name.to_string()); ++ env_vars.insert("STATE", new_state.to_string()); + } +- PlayerEvent::Stopped { track_id } => { ++ PlayerEvent::Stopped { track_id, new_state } => { + env_vars.insert("PLAYER_EVENT", "stop".to_string()); + env_vars.insert("TRACK_ID", track_id.to_base16()); ++ env_vars.insert("STATE", new_state.to_string()); + } + } + run_program(onevent, env_vars); diff --git a/packages/addons/service/librespot/patches/librespot-03_pulseaudio_sink.patch b/packages/addons/service/librespot/patches/librespot-03_pulseaudio_sink.patch index d64bec3c43..ccbefea025 100644 --- a/packages/addons/service/librespot/patches/librespot-03_pulseaudio_sink.patch +++ b/packages/addons/service/librespot/patches/librespot-03_pulseaudio_sink.patch @@ -1,17 +1,8 @@ -From fb7b845f5ef4c5f4ffdcbef6abab1fecc0acca2a Mon Sep 17 00:00:00 2001 -From: awiouy -Date: Fri, 26 Jan 2018 21:07:48 +0100 -Subject: [PATCH] use librespot_sink pulseadio sink - ---- - playback/src/audio_backend/pulseaudio.rs | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - diff --git a/playback/src/audio_backend/pulseaudio.rs b/playback/src/audio_backend/pulseaudio.rs -index e9f0039..d5c2bbb 100644 +index 88f6280..4e7186b 100644 --- a/playback/src/audio_backend/pulseaudio.rs +++ b/playback/src/audio_backend/pulseaudio.rs -@@ -75,13 +75,14 @@ impl Open for PulseAudioSink { +@@ -76,6 +76,7 @@ impl Open for PulseAudioSink { impl Sink for PulseAudioSink { fn start(&mut self) -> io::Result<()> { @@ -19,11 +10,12 @@ index e9f0039..d5c2bbb 100644 if self.s == null_mut() { self.s = call_pulseaudio( |err| unsafe { - pa_simple_new(null(), // Use the default server. - self.name.as_ptr(), // Our application's name. - PA_STREAM_PLAYBACK, -- null(), // Use the default device. -+ sink.as_ptr(), // Our sink. - self.desc.as_ptr(), // desc of our stream. - &self.ss, // Our sample format. - null(), // Use default channel map +@@ -83,7 +84,7 @@ impl Sink for PulseAudioSink { + null(), // Use the default server. + self.name.as_ptr(), // Our application's name. + PA_STREAM_PLAYBACK, +- null(), // Use the default device. ++ sink.as_ptr(), // Our sink. + self.desc.as_ptr(), // desc of our stream. + &self.ss, // Our sample format. + null(), // Use default channel map diff --git a/packages/addons/service/librespot/patches/librespot-04_add_kSupportsPlaylistV2_enum.patch b/packages/addons/service/librespot/patches/librespot-04_add_kSupportsPlaylistV2_enum.patch deleted file mode 100644 index 147207fe2c..0000000000 --- a/packages/addons/service/librespot/patches/librespot-04_add_kSupportsPlaylistV2_enum.patch +++ /dev/null @@ -1,657 +0,0 @@ -From 80e0bdaa396a23a4afce5e643731d9e4ff213175 Mon Sep 17 00:00:00 2001 -From: Sasha Hilton -Date: Sun, 25 Feb 2018 21:23:32 +0100 -Subject: [PATCH] Add kSupportsPlaylistV2 enum - ---- - protocol/build.sh | 0 - protocol/files.rs | 2 +- - protocol/proto/spirc.proto | 1 + - protocol/src/spirc.rs | 581 +++++++++++++++++++++++---------------------- - 4 files changed, 295 insertions(+), 289 deletions(-) - mode change 100644 => 100755 protocol/build.sh - -diff --git a/protocol/build.sh b/protocol/build.sh -old mode 100644 -new mode 100755 -diff --git a/protocol/files.rs b/protocol/files.rs -index ad208d7..13db30e 100644 ---- a/protocol/files.rs -+++ b/protocol/files.rs -@@ -6,5 +6,5 @@ pub const FILES : &'static [(&'static str, u32)] = &[ - ("proto/mercury.proto", 709993906), - ("proto/metadata.proto", 2474472423), - ("proto/pubsub.proto", 2686584829), -- ("proto/spirc.proto", 3618770573), -+ ("proto/spirc.proto", 3695752338), - ]; -diff --git a/protocol/proto/spirc.proto b/protocol/proto/spirc.proto -index 4f29f87..f2ef280 100644 ---- a/protocol/proto/spirc.proto -+++ b/protocol/proto/spirc.proto -@@ -75,6 +75,7 @@ enum CapabilityType { - kCommandAcks = 0xa; - kSupportsRename = 0xb; - kHidden = 0xc; -+ kSupportsPlaylistV2 = 0xd; - } - - message Goodbye { -diff --git a/protocol/src/spirc.rs b/protocol/src/spirc.rs -index a8b2f26..f3f66bc 100644 ---- a/protocol/src/spirc.rs -+++ b/protocol/src/spirc.rs -@@ -4407,6 +4407,7 @@ pub enum CapabilityType { - kCommandAcks = 10, - kSupportsRename = 11, - kHidden = 12, -+ kSupportsPlaylistV2 = 13, - } - - impl ::protobuf::ProtobufEnum for CapabilityType { -@@ -4428,6 +4429,7 @@ impl ::protobuf::ProtobufEnum for CapabilityType { - 10 => ::std::option::Option::Some(CapabilityType::kCommandAcks), - 11 => ::std::option::Option::Some(CapabilityType::kSupportsRename), - 12 => ::std::option::Option::Some(CapabilityType::kHidden), -+ 13 => ::std::option::Option::Some(CapabilityType::kSupportsPlaylistV2), - _ => ::std::option::Option::None - } - } -@@ -4446,6 +4448,7 @@ impl ::protobuf::ProtobufEnum for CapabilityType { - CapabilityType::kCommandAcks, - CapabilityType::kSupportsRename, - CapabilityType::kHidden, -+ CapabilityType::kSupportsPlaylistV2, - ]; - values - } -@@ -4591,299 +4594,301 @@ static file_descriptor_proto_data: &'static [u8] = b"\ - geTypeVolumeUp\x10\x20\x12\x17\n\x13kMessageTypeReplace\x10!\x12\x16\n\ - \x12kMessageTypeLogout\x10\"\x12\x16\n\x12kMessageTypeAction\x10#\x12\ - \x16\n\x12kMessageTypeRename\x10$\x12\x1f\n\x1akMessageTypeUpdateMetadat\ -- a\x10\x80\x01*\xfa\x01\n\x0eCapabilityType\x12\x16\n\x12kSupportedContex\ -+ a\x10\x80\x01*\x93\x02\n\x0eCapabilityType\x12\x16\n\x12kSupportedContex\ - ts\x10\x01\x12\x10\n\x0ckCanBePlayer\x10\x02\x12\x14\n\x10kRestrictToLoc\ - al\x10\x03\x12\x0f\n\x0bkDeviceType\x10\x04\x12\x14\n\x10kGaiaEqConnectI\ - d\x10\x05\x12\x13\n\x0fkSupportsLogout\x10\x06\x12\x11\n\rkIsObservable\ - \x10\x07\x12\x10\n\x0ckVolumeSteps\x10\x08\x12\x13\n\x0fkSupportedTypes\ - \x10\t\x12\x10\n\x0ckCommandAcks\x10\n\x12\x13\n\x0fkSupportsRename\x10\ -- \x0b\x12\x0b\n\x07kHidden\x10\x0c*d\n\nPlayStatus\x12\x13\n\x0fkPlayStat\ -- usStop\x10\0\x12\x13\n\x0fkPlayStatusPlay\x10\x01\x12\x14\n\x10kPlayStat\ -- usPause\x10\x02\x12\x16\n\x12kPlayStatusLoading\x10\x03J\xbf.\n\x07\x12\ -- \x05\0\0\x82\x01\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\n\n\x02\x04\0\x12\ -- \x04\x02\0\x12\x01\n\n\n\x03\x04\0\x01\x12\x03\x02\x08\r\n\x0b\n\x04\x04\ -- \0\x02\0\x12\x03\x03\x04\"\n\x0c\n\x05\x04\0\x02\0\x04\x12\x03\x03\x04\ -- \x0c\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x03\r\x13\n\x0c\n\x05\x04\0\x02\ -- \0\x01\x12\x03\x03\x14\x1b\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x03\x1e!\ -- \n\x0b\n\x04\x04\0\x02\x01\x12\x03\x04\x04\x20\n\x0c\n\x05\x04\0\x02\x01\ -- \x04\x12\x03\x04\x04\x0c\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x04\r\x13\ -- \n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x04\x14\x19\n\x0c\n\x05\x04\0\x02\ -- \x01\x03\x12\x03\x04\x1c\x1f\n\x0b\n\x04\x04\0\x02\x02\x12\x03\x05\x04+\ -- \n\x0c\n\x05\x04\0\x02\x02\x04\x12\x03\x05\x04\x0c\n\x0c\n\x05\x04\0\x02\ -- \x02\x05\x12\x03\x05\r\x13\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x03\x05\x14\ -- $\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03\x05'*\n\x0b\n\x04\x04\0\x02\x03\ -- \x12\x03\x06\x04!\n\x0c\n\x05\x04\0\x02\x03\x04\x12\x03\x06\x04\x0c\n\ -- \x0c\n\x05\x04\0\x02\x03\x05\x12\x03\x06\r\x13\n\x0c\n\x05\x04\0\x02\x03\ -- \x01\x12\x03\x06\x14\x1a\n\x0c\n\x05\x04\0\x02\x03\x03\x12\x03\x06\x1d\ -- \x20\n\x0b\n\x04\x04\0\x02\x04\x12\x03\x07\x04#\n\x0c\n\x05\x04\0\x02\ -- \x04\x04\x12\x03\x07\x04\x0c\n\x0c\n\x05\x04\0\x02\x04\x06\x12\x03\x07\r\ -- \x18\n\x0c\n\x05\x04\0\x02\x04\x01\x12\x03\x07\x19\x1c\n\x0c\n\x05\x04\0\ -- \x02\x04\x03\x12\x03\x07\x1f\"\n\x0b\n\x04\x04\0\x02\x05\x12\x03\x08\x04\ -- ,\n\x0c\n\x05\x04\0\x02\x05\x04\x12\x03\x08\x04\x0c\n\x0c\n\x05\x04\0\ -- \x02\x05\x06\x12\x03\x08\r\x18\n\x0c\n\x05\x04\0\x02\x05\x01\x12\x03\x08\ -- \x19%\n\x0c\n\x05\x04\0\x02\x05\x03\x12\x03\x08(+\n\x0b\n\x04\x04\0\x02\ -- \x06\x12\x03\t\x04#\n\x0c\n\x05\x04\0\x02\x06\x04\x12\x03\t\x04\x0c\n\ -- \x0c\n\x05\x04\0\x02\x06\x06\x12\x03\t\r\x14\n\x0c\n\x05\x04\0\x02\x06\ -- \x01\x12\x03\t\x15\x1c\n\x0c\n\x05\x04\0\x02\x06\x03\x12\x03\t\x1f\"\n\ -- \x0b\n\x04\x04\0\x02\x07\x12\x03\n\x04\x1f\n\x0c\n\x05\x04\0\x02\x07\x04\ -- \x12\x03\n\x04\x0c\n\x0c\n\x05\x04\0\x02\x07\x06\x12\x03\n\r\x12\n\x0c\n\ -- \x05\x04\0\x02\x07\x01\x12\x03\n\x13\x18\n\x0c\n\x05\x04\0\x02\x07\x03\ -- \x12\x03\n\x1b\x1e\n\x0b\n\x04\x04\0\x02\x08\x12\x03\x0b\x04#\n\x0c\n\ -- \x05\x04\0\x02\x08\x04\x12\x03\x0b\x04\x0c\n\x0c\n\x05\x04\0\x02\x08\x05\ -- \x12\x03\x0b\r\x13\n\x0c\n\x05\x04\0\x02\x08\x01\x12\x03\x0b\x14\x1c\n\ -- \x0c\n\x05\x04\0\x02\x08\x03\x12\x03\x0b\x1f\"\n\x0b\n\x04\x04\0\x02\t\ -- \x12\x03\x0c\x04!\n\x0c\n\x05\x04\0\x02\t\x04\x12\x03\x0c\x04\x0c\n\x0c\ -- \n\x05\x04\0\x02\t\x05\x12\x03\x0c\r\x13\n\x0c\n\x05\x04\0\x02\t\x01\x12\ -- \x03\x0c\x14\x1a\n\x0c\n\x05\x04\0\x02\t\x03\x12\x03\x0c\x1d\x20\n\x0b\n\ -- \x04\x04\0\x02\n\x12\x03\r\x04*\n\x0c\n\x05\x04\0\x02\n\x04\x12\x03\r\ -- \x04\x0c\n\x0c\n\x05\x04\0\x02\n\x05\x12\x03\r\r\x12\n\x0c\n\x05\x04\0\ -- \x02\n\x01\x12\x03\r\x13\"\n\x0c\n\x05\x04\0\x02\n\x03\x12\x03\r%)\n\x0b\ -- \n\x04\x04\0\x02\x0b\x12\x03\x0e\x04%\n\x0c\n\x05\x04\0\x02\x0b\x04\x12\ -- \x03\x0e\x04\x0c\n\x0c\n\x05\x04\0\x02\x0b\x05\x12\x03\x0e\r\x13\n\x0c\n\ -- \x05\x04\0\x02\x0b\x01\x12\x03\x0e\x14\x1d\n\x0c\n\x05\x04\0\x02\x0b\x03\ -- \x12\x03\x0e\x20$\n\x0b\n\x04\x04\0\x02\x0c\x12\x03\x0f\x04/\n\x0c\n\x05\ -- \x04\0\x02\x0c\x04\x12\x03\x0f\x04\x0c\n\x0c\n\x05\x04\0\x02\x0c\x05\x12\ -- \x03\x0f\r\x12\n\x0c\n\x05\x04\0\x02\x0c\x01\x12\x03\x0f\x13'\n\x0c\n\ -- \x05\x04\0\x02\x0c\x03\x12\x03\x0f*.\n\x0b\n\x04\x04\0\x02\r\x12\x03\x10\ -- \x04$\n\x0c\n\x05\x04\0\x02\r\x04\x12\x03\x10\x04\x0c\n\x0c\n\x05\x04\0\ -- \x02\r\x05\x12\x03\x10\r\x13\n\x0c\n\x05\x04\0\x02\r\x01\x12\x03\x10\x14\ -- \x1c\n\x0c\n\x05\x04\0\x02\r\x03\x12\x03\x10\x1f#\n\x0b\n\x04\x04\0\x02\ -- \x0e\x12\x03\x11\x04&\n\x0c\n\x05\x04\0\x02\x0e\x04\x12\x03\x11\x04\x0c\ -- \n\x0c\n\x05\x04\0\x02\x0e\x06\x12\x03\x11\r\x15\n\x0c\n\x05\x04\0\x02\ -- \x0e\x01\x12\x03\x11\x16\x1e\n\x0c\n\x05\x04\0\x02\x0e\x03\x12\x03\x11!%\ -- \n\n\n\x02\x05\0\x12\x04\x14\0*\x01\n\n\n\x03\x05\0\x01\x12\x03\x14\x05\ -- \x10\n\x0b\n\x04\x05\0\x02\0\x12\x03\x15\x04\x1c\n\x0c\n\x05\x05\0\x02\0\ -- \x01\x12\x03\x15\x04\x15\n\x0c\n\x05\x05\0\x02\0\x02\x12\x03\x15\x18\x1b\ -- \n\x0b\n\x04\x05\0\x02\x01\x12\x03\x16\x04\x1e\n\x0c\n\x05\x05\0\x02\x01\ -- \x01\x12\x03\x16\x04\x17\n\x0c\n\x05\x05\0\x02\x01\x02\x12\x03\x16\x1a\ -- \x1d\n\x0b\n\x04\x05\0\x02\x02\x12\x03\x17\x04\x1c\n\x0c\n\x05\x05\0\x02\ -- \x02\x01\x12\x03\x17\x04\x15\n\x0c\n\x05\x05\0\x02\x02\x02\x12\x03\x17\ -- \x18\x1b\n\x0b\n\x04\x05\0\x02\x03\x12\x03\x18\x04\x1d\n\x0c\n\x05\x05\0\ -- \x02\x03\x01\x12\x03\x18\x04\x16\n\x0c\n\x05\x05\0\x02\x03\x02\x12\x03\ -- \x18\x19\x1c\n\x0b\n\x04\x05\0\x02\x04\x12\x03\x19\x04\x1c\n\x0c\n\x05\ -- \x05\0\x02\x04\x01\x12\x03\x19\x04\x14\n\x0c\n\x05\x05\0\x02\x04\x02\x12\ -- \x03\x19\x17\x1b\n\x0b\n\x04\x05\0\x02\x05\x12\x03\x1a\x04\x1c\n\x0c\n\ -- \x05\x05\0\x02\x05\x01\x12\x03\x1a\x04\x14\n\x0c\n\x05\x05\0\x02\x05\x02\ -- \x12\x03\x1a\x17\x1b\n\x0b\n\x04\x05\0\x02\x06\x12\x03\x1b\x04\x1d\n\x0c\ -- \n\x05\x05\0\x02\x06\x01\x12\x03\x1b\x04\x15\n\x0c\n\x05\x05\0\x02\x06\ -- \x02\x12\x03\x1b\x18\x1c\n\x0b\n\x04\x05\0\x02\x07\x12\x03\x1c\x04!\n\ -- \x0c\n\x05\x05\0\x02\x07\x01\x12\x03\x1c\x04\x19\n\x0c\n\x05\x05\0\x02\ -- \x07\x02\x12\x03\x1c\x1c\x20\n\x0b\n\x04\x05\0\x02\x08\x12\x03\x1d\x04\ -- \x1c\n\x0c\n\x05\x05\0\x02\x08\x01\x12\x03\x1d\x04\x14\n\x0c\n\x05\x05\0\ -- \x02\x08\x02\x12\x03\x1d\x17\x1b\n\x0b\n\x04\x05\0\x02\t\x12\x03\x1e\x04\ -- \x1c\n\x0c\n\x05\x05\0\x02\t\x01\x12\x03\x1e\x04\x14\n\x0c\n\x05\x05\0\ -- \x02\t\x02\x12\x03\x1e\x17\x1b\n\x0b\n\x04\x05\0\x02\n\x12\x03\x1f\x04\ -- \x1c\n\x0c\n\x05\x05\0\x02\n\x01\x12\x03\x1f\x04\x14\n\x0c\n\x05\x05\0\ -- \x02\n\x02\x12\x03\x1f\x17\x1b\n\x0b\n\x04\x05\0\x02\x0b\x12\x03\x20\x04\ -- \x1e\n\x0c\n\x05\x05\0\x02\x0b\x01\x12\x03\x20\x04\x16\n\x0c\n\x05\x05\0\ -- \x02\x0b\x02\x12\x03\x20\x19\x1d\n\x0b\n\x04\x05\0\x02\x0c\x12\x03!\x04\ -- \x1f\n\x0c\n\x05\x05\0\x02\x0c\x01\x12\x03!\x04\x17\n\x0c\n\x05\x05\0\ -- \x02\x0c\x02\x12\x03!\x1a\x1e\n\x0b\n\x04\x05\0\x02\r\x12\x03\"\x04\x1e\ -- \n\x0c\n\x05\x05\0\x02\r\x01\x12\x03\"\x04\x16\n\x0c\n\x05\x05\0\x02\r\ -- \x02\x12\x03\"\x19\x1d\n\x0b\n\x04\x05\0\x02\x0e\x12\x03#\x04\"\n\x0c\n\ -- \x05\x05\0\x02\x0e\x01\x12\x03#\x04\x1a\n\x0c\n\x05\x05\0\x02\x0e\x02\ -- \x12\x03#\x1d!\n\x0b\n\x04\x05\0\x02\x0f\x12\x03$\x04\x20\n\x0c\n\x05\ -- \x05\0\x02\x0f\x01\x12\x03$\x04\x18\n\x0c\n\x05\x05\0\x02\x0f\x02\x12\ -- \x03$\x1b\x1f\n\x0b\n\x04\x05\0\x02\x10\x12\x03%\x04\x1f\n\x0c\n\x05\x05\ -- \0\x02\x10\x01\x12\x03%\x04\x17\n\x0c\n\x05\x05\0\x02\x10\x02\x12\x03%\ -- \x1a\x1e\n\x0b\n\x04\x05\0\x02\x11\x12\x03&\x04\x1e\n\x0c\n\x05\x05\0\ -- \x02\x11\x01\x12\x03&\x04\x16\n\x0c\n\x05\x05\0\x02\x11\x02\x12\x03&\x19\ -- \x1d\n\x0b\n\x04\x05\0\x02\x12\x12\x03'\x04\x1e\n\x0c\n\x05\x05\0\x02\ -- \x12\x01\x12\x03'\x04\x16\n\x0c\n\x05\x05\0\x02\x12\x02\x12\x03'\x19\x1d\ -- \n\x0b\n\x04\x05\0\x02\x13\x12\x03(\x04\x1e\n\x0c\n\x05\x05\0\x02\x13\ -- \x01\x12\x03(\x04\x16\n\x0c\n\x05\x05\0\x02\x13\x02\x12\x03(\x19\x1d\n\ -- \x0b\n\x04\x05\0\x02\x14\x12\x03)\x04&\n\x0c\n\x05\x05\0\x02\x14\x01\x12\ -- \x03)\x04\x1e\n\x0c\n\x05\x05\0\x02\x14\x02\x12\x03)!%\n\n\n\x02\x04\x01\ -- \x12\x04,\08\x01\n\n\n\x03\x04\x01\x01\x12\x03,\x08\x13\n\x0b\n\x04\x04\ -- \x01\x02\0\x12\x03-\x04%\n\x0c\n\x05\x04\x01\x02\0\x04\x12\x03-\x04\x0c\ -- \n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03-\r\x13\n\x0c\n\x05\x04\x01\x02\0\ -- \x01\x12\x03-\x14\x1e\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03-!$\n\x0b\n\ -- \x04\x04\x01\x02\x01\x12\x03.\x04\"\n\x0c\n\x05\x04\x01\x02\x01\x04\x12\ -- \x03.\x04\x0c\n\x0c\n\x05\x04\x01\x02\x01\x05\x12\x03.\r\x11\n\x0c\n\x05\ -- \x04\x01\x02\x01\x01\x12\x03.\x12\x1b\n\x0c\n\x05\x04\x01\x02\x01\x03\ -- \x12\x03.\x1e!\n\x0b\n\x04\x04\x01\x02\x02\x12\x03/\x04!\n\x0c\n\x05\x04\ -- \x01\x02\x02\x04\x12\x03/\x04\x0c\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\ -- \x03/\r\x11\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03/\x12\x1a\n\x0c\n\x05\ -- \x04\x01\x02\x02\x03\x12\x03/\x1d\x20\n\x0b\n\x04\x04\x01\x02\x03\x12\ -- \x030\x04!\n\x0c\n\x05\x04\x01\x02\x03\x04\x12\x030\x04\x0c\n\x0c\n\x05\ -- \x04\x01\x02\x03\x05\x12\x030\r\x13\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\ -- \x030\x14\x1a\n\x0c\n\x05\x04\x01\x02\x03\x03\x12\x030\x1d\x20\n\x0b\n\ -- \x04\x04\x01\x02\x04\x12\x031\x04\x1f\n\x0c\n\x05\x04\x01\x02\x04\x04\ -- \x12\x031\x04\x0c\n\x0c\n\x05\x04\x01\x02\x04\x05\x12\x031\r\x13\n\x0c\n\ -- \x05\x04\x01\x02\x04\x01\x12\x031\x14\x18\n\x0c\n\x05\x04\x01\x02\x04\ -- \x03\x12\x031\x1b\x1e\n\x0b\n\x04\x04\x01\x02\x05\x12\x032\x04%\n\x0c\n\ -- \x05\x04\x01\x02\x05\x04\x12\x032\x04\x0c\n\x0c\n\x05\x04\x01\x02\x05\ -- \x05\x12\x032\r\x13\n\x0c\n\x05\x04\x01\x02\x05\x01\x12\x032\x14\x1e\n\ -- \x0c\n\x05\x04\x01\x02\x05\x03\x12\x032!$\n\x0b\n\x04\x04\x01\x02\x06\ -- \x12\x033\x04*\n\x0c\n\x05\x04\x01\x02\x06\x04\x12\x033\x04\x0c\n\x0c\n\ -- \x05\x04\x01\x02\x06\x05\x12\x033\r\x12\n\x0c\n\x05\x04\x01\x02\x06\x01\ -- \x12\x033\x13#\n\x0c\n\x05\x04\x01\x02\x06\x03\x12\x033&)\n\x0b\n\x04\ -- \x04\x01\x02\x07\x12\x034\x04)\n\x0c\n\x05\x04\x01\x02\x07\x04\x12\x034\ -- \x04\x0c\n\x0c\n\x05\x04\x01\x02\x07\x05\x12\x034\r\x13\n\x0c\n\x05\x04\ -- \x01\x02\x07\x01\x12\x034\x14!\n\x0c\n\x05\x04\x01\x02\x07\x03\x12\x034$\ -- (\n\x0b\n\x04\x04\x01\x02\x08\x12\x035\x04,\n\x0c\n\x05\x04\x01\x02\x08\ -- \x04\x12\x035\x04\x0c\n\x0c\n\x05\x04\x01\x02\x08\x06\x12\x035\r\x17\n\ -- \x0c\n\x05\x04\x01\x02\x08\x01\x12\x035\x18$\n\x0c\n\x05\x04\x01\x02\x08\ -- \x03\x12\x035'+\n\x0b\n\x04\x04\x01\x02\t\x12\x036\x040\n\x0c\n\x05\x04\ -- \x01\x02\t\x04\x12\x036\x04\x0c\n\x0c\n\x05\x04\x01\x02\t\x05\x12\x036\r\ -- \x13\n\x0c\n\x05\x04\x01\x02\t\x01\x12\x036\x14(\n\x0c\n\x05\x04\x01\x02\ -- \t\x03\x12\x036+/\n\x0b\n\x04\x04\x01\x02\n\x12\x037\x04&\n\x0c\n\x05\ -- \x04\x01\x02\n\x04\x12\x037\x04\x0c\n\x0c\n\x05\x04\x01\x02\n\x06\x12\ -- \x037\r\x15\n\x0c\n\x05\x04\x01\x02\n\x01\x12\x037\x16\x1e\n\x0c\n\x05\ -- \x04\x01\x02\n\x03\x12\x037!%\n\n\n\x02\x04\x02\x12\x04:\0>\x01\n\n\n\ -- \x03\x04\x02\x01\x12\x03:\x08\x12\n\x0b\n\x04\x04\x02\x02\0\x12\x03;\x04\ -- &\n\x0c\n\x05\x04\x02\x02\0\x04\x12\x03;\x04\x0c\n\x0c\n\x05\x04\x02\x02\ -- \0\x06\x12\x03;\r\x1b\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03;\x1c\x1f\n\ -- \x0c\n\x05\x04\x02\x02\0\x03\x12\x03;\"%\n\x0b\n\x04\x04\x02\x02\x01\x12\ -- \x03<\x04\"\n\x0c\n\x05\x04\x02\x02\x01\x04\x12\x03<\x04\x0c\n\x0c\n\x05\ -- \x04\x02\x02\x01\x05\x12\x03<\r\x12\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\ -- \x03<\x13\x1b\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03<\x1e!\n\x0b\n\x04\ -- \x04\x02\x02\x02\x12\x03=\x04&\n\x0c\n\x05\x04\x02\x02\x02\x04\x12\x03=\ -- \x04\x0c\n\x0c\n\x05\x04\x02\x02\x02\x05\x12\x03=\r\x13\n\x0c\n\x05\x04\ -- \x02\x02\x02\x01\x12\x03=\x14\x1f\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\ -- \x03=\"%\n\n\n\x02\x05\x01\x12\x04@\0M\x01\n\n\n\x03\x05\x01\x01\x12\x03\ -- @\x05\x13\n\x0b\n\x04\x05\x01\x02\0\x12\x03A\x04\x1d\n\x0c\n\x05\x05\x01\ -- \x02\0\x01\x12\x03A\x04\x16\n\x0c\n\x05\x05\x01\x02\0\x02\x12\x03A\x19\ -- \x1c\n\x0b\n\x04\x05\x01\x02\x01\x12\x03B\x04\x17\n\x0c\n\x05\x05\x01\ -- \x02\x01\x01\x12\x03B\x04\x10\n\x0c\n\x05\x05\x01\x02\x01\x02\x12\x03B\ -- \x13\x16\n\x0b\n\x04\x05\x01\x02\x02\x12\x03C\x04\x1b\n\x0c\n\x05\x05\ -- \x01\x02\x02\x01\x12\x03C\x04\x14\n\x0c\n\x05\x05\x01\x02\x02\x02\x12\ -- \x03C\x17\x1a\n\x0b\n\x04\x05\x01\x02\x03\x12\x03D\x04\x16\n\x0c\n\x05\ -- \x05\x01\x02\x03\x01\x12\x03D\x04\x0f\n\x0c\n\x05\x05\x01\x02\x03\x02\ -- \x12\x03D\x12\x15\n\x0b\n\x04\x05\x01\x02\x04\x12\x03E\x04\x1b\n\x0c\n\ -- \x05\x05\x01\x02\x04\x01\x12\x03E\x04\x14\n\x0c\n\x05\x05\x01\x02\x04\ -- \x02\x12\x03E\x17\x1a\n\x0b\n\x04\x05\x01\x02\x05\x12\x03F\x04\x1a\n\x0c\ -- \n\x05\x05\x01\x02\x05\x01\x12\x03F\x04\x13\n\x0c\n\x05\x05\x01\x02\x05\ -- \x02\x12\x03F\x16\x19\n\x0b\n\x04\x05\x01\x02\x06\x12\x03G\x04\x18\n\x0c\ -- \n\x05\x05\x01\x02\x06\x01\x12\x03G\x04\x11\n\x0c\n\x05\x05\x01\x02\x06\ -- \x02\x12\x03G\x14\x17\n\x0b\n\x04\x05\x01\x02\x07\x12\x03H\x04\x17\n\x0c\ -- \n\x05\x05\x01\x02\x07\x01\x12\x03H\x04\x10\n\x0c\n\x05\x05\x01\x02\x07\ -- \x02\x12\x03H\x13\x16\n\x0b\n\x04\x05\x01\x02\x08\x12\x03I\x04\x1a\n\x0c\ -- \n\x05\x05\x01\x02\x08\x01\x12\x03I\x04\x13\n\x0c\n\x05\x05\x01\x02\x08\ -- \x02\x12\x03I\x16\x19\n\x0b\n\x04\x05\x01\x02\t\x12\x03J\x04\x17\n\x0c\n\ -- \x05\x05\x01\x02\t\x01\x12\x03J\x04\x10\n\x0c\n\x05\x05\x01\x02\t\x02\ -- \x12\x03J\x13\x16\n\x0b\n\x04\x05\x01\x02\n\x12\x03K\x04\x1a\n\x0c\n\x05\ -- \x05\x01\x02\n\x01\x12\x03K\x04\x13\n\x0c\n\x05\x05\x01\x02\n\x02\x12\ -- \x03K\x16\x19\n\x0b\n\x04\x05\x01\x02\x0b\x12\x03L\x04\x12\n\x0c\n\x05\ -- \x05\x01\x02\x0b\x01\x12\x03L\x04\x0b\n\x0c\n\x05\x05\x01\x02\x0b\x02\ -- \x12\x03L\x0e\x11\n\n\n\x02\x04\x03\x12\x04O\0Q\x01\n\n\n\x03\x04\x03\ -- \x01\x12\x03O\x08\x0f\n\x0b\n\x04\x04\x03\x02\0\x12\x03P\x04!\n\x0c\n\ -- \x05\x04\x03\x02\0\x04\x12\x03P\x04\x0c\n\x0c\n\x05\x04\x03\x02\0\x05\ -- \x12\x03P\r\x13\n\x0c\n\x05\x04\x03\x02\0\x01\x12\x03P\x14\x1a\n\x0c\n\ -- \x05\x04\x03\x02\0\x03\x12\x03P\x1d\x20\n\n\n\x02\x04\x04\x12\x04S\0c\ -- \x01\n\n\n\x03\x04\x04\x01\x12\x03S\x08\r\n\x0b\n\x04\x04\x04\x02\0\x12\ -- \x03T\x04&\n\x0c\n\x05\x04\x04\x02\0\x04\x12\x03T\x04\x0c\n\x0c\n\x05\ -- \x04\x04\x02\0\x05\x12\x03T\r\x13\n\x0c\n\x05\x04\x04\x02\0\x01\x12\x03T\ -- \x14\x1f\n\x0c\n\x05\x04\x04\x02\0\x03\x12\x03T\"%\n\x0b\n\x04\x04\x04\ -- \x02\x01\x12\x03U\x04\x20\n\x0c\n\x05\x04\x04\x02\x01\x04\x12\x03U\x04\ -- \x0c\n\x0c\n\x05\x04\x04\x02\x01\x05\x12\x03U\r\x13\n\x0c\n\x05\x04\x04\ -- \x02\x01\x01\x12\x03U\x14\x19\n\x0c\n\x05\x04\x04\x02\x01\x03\x12\x03U\ -- \x1c\x1f\n\x0b\n\x04\x04\x04\x02\x02\x12\x03V\x04&\n\x0c\n\x05\x04\x04\ -- \x02\x02\x04\x12\x03V\x04\x0c\n\x0c\n\x05\x04\x04\x02\x02\x05\x12\x03V\r\ -- \x13\n\x0c\n\x05\x04\x04\x02\x02\x01\x12\x03V\x14\x1f\n\x0c\n\x05\x04\ -- \x04\x02\x02\x03\x12\x03V\"%\n\x0b\n\x04\x04\x04\x02\x03\x12\x03W\x04%\n\ -- \x0c\n\x05\x04\x04\x02\x03\x04\x12\x03W\x04\x0c\n\x0c\n\x05\x04\x04\x02\ -- \x03\x06\x12\x03W\r\x17\n\x0c\n\x05\x04\x04\x02\x03\x01\x12\x03W\x18\x1e\ -- \n\x0c\n\x05\x04\x04\x02\x03\x03\x12\x03W!$\n\x0b\n\x04\x04\x04\x02\x04\ -- \x12\x03X\x04/\n\x0c\n\x05\x04\x04\x02\x04\x04\x12\x03X\x04\x0c\n\x0c\n\ -- \x05\x04\x04\x02\x04\x05\x12\x03X\r\x13\n\x0c\n\x05\x04\x04\x02\x04\x01\ -- \x12\x03X\x14(\n\x0c\n\x05\x04\x04\x02\x04\x03\x12\x03X+.\n\x0b\n\x04\ -- \x04\x04\x02\x05\x12\x03Y\x04.\n\x0c\n\x05\x04\x04\x02\x05\x04\x12\x03Y\ -- \x04\x0c\n\x0c\n\x05\x04\x04\x02\x05\x05\x12\x03Y\r\x13\n\x0c\n\x05\x04\ -- \x04\x02\x05\x01\x12\x03Y\x14'\n\x0c\n\x05\x04\x04\x02\x05\x03\x12\x03Y*\ -- -\n\x0b\n\x04\x04\x04\x02\x06\x12\x03Z\x04\x20\n\x0c\n\x05\x04\x04\x02\ -- \x06\x04\x12\x03Z\x04\x0c\n\x0c\n\x05\x04\x04\x02\x06\x05\x12\x03Z\r\x11\ -- \n\x0c\n\x05\x04\x04\x02\x06\x01\x12\x03Z\x12\x19\n\x0c\n\x05\x04\x04\ -- \x02\x06\x03\x12\x03Z\x1c\x1f\n\x0b\n\x04\x04\x04\x02\x07\x12\x03[\x04\ -- \x1f\n\x0c\n\x05\x04\x04\x02\x07\x04\x12\x03[\x04\x0c\n\x0c\n\x05\x04\ -- \x04\x02\x07\x05\x12\x03[\r\x11\n\x0c\n\x05\x04\x04\x02\x07\x01\x12\x03[\ -- \x12\x18\n\x0c\n\x05\x04\x04\x02\x07\x03\x12\x03[\x1b\x1e\n\x0b\n\x04\ -- \x04\x04\x02\x08\x12\x03\\\x04.\n\x0c\n\x05\x04\x04\x02\x08\x04\x12\x03\ -- \\\x04\x0c\n\x0c\n\x05\x04\x04\x02\x08\x05\x12\x03\\\r\x13\n\x0c\n\x05\ -- \x04\x04\x02\x08\x01\x12\x03\\\x14&\n\x0c\n\x05\x04\x04\x02\x08\x03\x12\ -- \x03\\)-\n\x0b\n\x04\x04\x04\x02\t\x12\x03]\x04.\n\x0c\n\x05\x04\x04\x02\ -- \t\x04\x12\x03]\x04\x0c\n\x0c\n\x05\x04\x04\x02\t\x05\x12\x03]\r\x13\n\ -- \x0c\n\x05\x04\x04\x02\t\x01\x12\x03]\x14&\n\x0c\n\x05\x04\x04\x02\t\x03\ -- \x12\x03])-\n\x0b\n\x04\x04\x04\x02\n\x12\x03^\x04/\n\x0c\n\x05\x04\x04\ -- \x02\n\x04\x12\x03^\x04\x0c\n\x0c\n\x05\x04\x04\x02\n\x05\x12\x03^\r\x11\ -- \n\x0c\n\x05\x04\x04\x02\n\x01\x12\x03^\x12'\n\x0c\n\x05\x04\x04\x02\n\ -- \x03\x12\x03^*.\n\x0b\n\x04\x04\x04\x02\x0b\x12\x03_\x04\x1f\n\x0c\n\x05\ -- \x04\x04\x02\x0b\x04\x12\x03_\x04\x0c\n\x0c\n\x05\x04\x04\x02\x0b\x05\ -- \x12\x03_\r\x13\n\x0c\n\x05\x04\x04\x02\x0b\x01\x12\x03_\x14\x17\n\x0c\n\ -- \x05\x04\x04\x02\x0b\x03\x12\x03_\x1a\x1e\n\x0b\n\x04\x04\x04\x02\x0c\ -- \x12\x03`\x04/\n\x0c\n\x05\x04\x04\x02\x0c\x04\x12\x03`\x04\x0c\n\x0c\n\ -- \x05\x04\x04\x02\x0c\x05\x12\x03`\r\x13\n\x0c\n\x05\x04\x04\x02\x0c\x01\ -- \x12\x03`\x14'\n\x0c\n\x05\x04\x04\x02\x0c\x03\x12\x03`*.\n\x0b\n\x04\ -- \x04\x04\x02\r\x12\x03a\x04#\n\x0c\n\x05\x04\x04\x02\r\x04\x12\x03a\x04\ -- \x0c\n\x0c\n\x05\x04\x04\x02\r\x06\x12\x03a\r\x15\n\x0c\n\x05\x04\x04\ -- \x02\r\x01\x12\x03a\x16\x1b\n\x0c\n\x05\x04\x04\x02\r\x03\x12\x03a\x1e\"\ -- \n\x0b\n\x04\x04\x04\x02\x0e\x12\x03b\x04\x1a\n\x0c\n\x05\x04\x04\x02\ -- \x0e\x04\x12\x03b\x04\x0c\n\x0c\n\x05\x04\x04\x02\x0e\x06\x12\x03b\r\x0f\ -- \n\x0c\n\x05\x04\x04\x02\x0e\x01\x12\x03b\x10\x12\n\x0c\n\x05\x04\x04\ -- \x02\x0e\x03\x12\x03b\x15\x19\n\n\n\x02\x05\x02\x12\x04e\0j\x01\n\n\n\ -- \x03\x05\x02\x01\x12\x03e\x05\x0f\n\x0b\n\x04\x05\x02\x02\0\x12\x03f\x04\ -- \x1a\n\x0c\n\x05\x05\x02\x02\0\x01\x12\x03f\x04\x13\n\x0c\n\x05\x05\x02\ -- \x02\0\x02\x12\x03f\x16\x19\n\x0b\n\x04\x05\x02\x02\x01\x12\x03g\x04\x1a\ -- \n\x0c\n\x05\x05\x02\x02\x01\x01\x12\x03g\x04\x13\n\x0c\n\x05\x05\x02\ -- \x02\x01\x02\x12\x03g\x16\x19\n\x0b\n\x04\x05\x02\x02\x02\x12\x03h\x04\ -- \x1b\n\x0c\n\x05\x05\x02\x02\x02\x01\x12\x03h\x04\x14\n\x0c\n\x05\x05\ -- \x02\x02\x02\x02\x12\x03h\x17\x1a\n\x0b\n\x04\x05\x02\x02\x03\x12\x03i\ -- \x04\x1d\n\x0c\n\x05\x05\x02\x02\x03\x01\x12\x03i\x04\x16\n\x0c\n\x05\ -- \x05\x02\x02\x03\x02\x12\x03i\x19\x1c\n\n\n\x02\x04\x05\x12\x04l\0q\x01\ -- \n\n\n\x03\x04\x05\x01\x12\x03l\x08\x10\n\x0b\n\x04\x04\x05\x02\0\x12\ -- \x03m\x04\x1d\n\x0c\n\x05\x04\x05\x02\0\x04\x12\x03m\x04\x0c\n\x0c\n\x05\ -- \x04\x05\x02\0\x05\x12\x03m\r\x12\n\x0c\n\x05\x04\x05\x02\0\x01\x12\x03m\ -- \x13\x16\n\x0c\n\x05\x04\x05\x02\0\x03\x12\x03m\x19\x1c\n\x0b\n\x04\x04\ -- \x05\x02\x01\x12\x03n\x04\x1e\n\x0c\n\x05\x04\x05\x02\x01\x04\x12\x03n\ -- \x04\x0c\n\x0c\n\x05\x04\x05\x02\x01\x05\x12\x03n\r\x13\n\x0c\n\x05\x04\ -- \x05\x02\x01\x01\x12\x03n\x14\x17\n\x0c\n\x05\x04\x05\x02\x01\x03\x12\ -- \x03n\x1a\x1d\n\x0b\n\x04\x04\x05\x02\x02\x12\x03o\x04\x1f\n\x0c\n\x05\ -- \x04\x05\x02\x02\x04\x12\x03o\x04\x0c\n\x0c\n\x05\x04\x05\x02\x02\x05\ -- \x12\x03o\r\x11\n\x0c\n\x05\x04\x05\x02\x02\x01\x12\x03o\x12\x18\n\x0c\n\ -- \x05\x04\x05\x02\x02\x03\x12\x03o\x1b\x1e\n\x0b\n\x04\x04\x05\x02\x03\ -- \x12\x03p\x04\"\n\x0c\n\x05\x04\x05\x02\x03\x04\x12\x03p\x04\x0c\n\x0c\n\ -- \x05\x04\x05\x02\x03\x05\x12\x03p\r\x13\n\x0c\n\x05\x04\x05\x02\x03\x01\ -- \x12\x03p\x14\x1b\n\x0c\n\x05\x04\x05\x02\x03\x03\x12\x03p\x1e!\n\n\n\ -- \x02\x04\x06\x12\x04s\0}\x01\n\n\n\x03\x04\x06\x01\x12\x03s\x08\n\n\x0b\ -- \n\x04\x04\x06\x02\0\x12\x03t\x04\x1e\n\x0c\n\x05\x04\x06\x02\0\x04\x12\ -- \x03t\x04\x0c\n\x0c\n\x05\x04\x06\x02\0\x05\x12\x03t\r\x12\n\x0c\n\x05\ -- \x04\x06\x02\0\x01\x12\x03t\x13\x17\n\x0c\n\x05\x04\x06\x02\0\x03\x12\ -- \x03t\x1a\x1d\n\x0b\n\x04\x04\x06\x02\x01\x12\x03u\x04!\n\x0c\n\x05\x04\ -- \x06\x02\x01\x04\x12\x03u\x04\x0c\n\x0c\n\x05\x04\x06\x02\x01\x05\x12\ -- \x03u\r\x12\n\x0c\n\x05\x04\x06\x02\x01\x01\x12\x03u\x13\x1a\n\x0c\n\x05\ -- \x04\x06\x02\x01\x03\x12\x03u\x1d\x20\n\x0b\n\x04\x04\x06\x02\x02\x12\ -- \x03v\x04#\n\x0c\n\x05\x04\x06\x02\x02\x04\x12\x03v\x04\x0c\n\x0c\n\x05\ -- \x04\x06\x02\x02\x05\x12\x03v\r\x12\n\x0c\n\x05\x04\x06\x02\x02\x01\x12\ -- \x03v\x13\x1c\n\x0c\n\x05\x04\x06\x02\x02\x03\x12\x03v\x1f\"\n\x0b\n\x04\ -- \x04\x06\x02\x03\x12\x03w\x04\"\n\x0c\n\x05\x04\x06\x02\x03\x04\x12\x03w\ -- \x04\x0c\n\x0c\n\x05\x04\x06\x02\x03\x05\x12\x03w\r\x12\n\x0c\n\x05\x04\ -- \x06\x02\x03\x01\x12\x03w\x13\x1b\n\x0c\n\x05\x04\x06\x02\x03\x03\x12\ -- \x03w\x1e!\n\x0b\n\x04\x04\x06\x02\x04\x12\x03x\x04$\n\x0c\n\x05\x04\x06\ -- \x02\x04\x04\x12\x03x\x04\x0c\n\x0c\n\x05\x04\x06\x02\x04\x05\x12\x03x\r\ -- \x13\n\x0c\n\x05\x04\x06\x02\x04\x01\x12\x03x\x14\x1d\n\x0c\n\x05\x04\ -- \x06\x02\x04\x03\x12\x03x\x20#\n\x0b\n\x04\x04\x06\x02\x05\x12\x03y\x04)\ -- \n\x0c\n\x05\x04\x06\x02\x05\x04\x12\x03y\x04\x0c\n\x0c\n\x05\x04\x06\ -- \x02\x05\x05\x12\x03y\r\x13\n\x0c\n\x05\x04\x06\x02\x05\x01\x12\x03y\x14\ -- \"\n\x0c\n\x05\x04\x06\x02\x05\x03\x12\x03y%(\n\x0b\n\x04\x04\x06\x02\ -- \x06\x12\x03z\x04\"\n\x0c\n\x05\x04\x06\x02\x06\x04\x12\x03z\x04\x0c\n\ -- \x0c\n\x05\x04\x06\x02\x06\x05\x12\x03z\r\x13\n\x0c\n\x05\x04\x06\x02\ -- \x06\x01\x12\x03z\x14\x1b\n\x0c\n\x05\x04\x06\x02\x06\x03\x12\x03z\x1e!\ -- \n\x0b\n\x04\x04\x06\x02\x07\x12\x03{\x04%\n\x0c\n\x05\x04\x06\x02\x07\ -- \x04\x12\x03{\x04\x0c\n\x0c\n\x05\x04\x06\x02\x07\x05\x12\x03{\r\x13\n\ -- \x0c\n\x05\x04\x06\x02\x07\x01\x12\x03{\x14\x1e\n\x0c\n\x05\x04\x06\x02\ -- \x07\x03\x12\x03{!$\n\x0b\n\x04\x04\x06\x02\x08\x12\x03|\x04\x1d\n\x0c\n\ -- \x05\x04\x06\x02\x08\x04\x12\x03|\x04\x0c\n\x0c\n\x05\x04\x06\x02\x08\ -- \x05\x12\x03|\r\x12\n\x0c\n\x05\x04\x06\x02\x08\x01\x12\x03|\x13\x16\n\ -- \x0c\n\x05\x04\x06\x02\x08\x03\x12\x03|\x19\x1c\n\x0b\n\x02\x04\x07\x12\ -- \x05\x7f\0\x82\x01\x01\n\n\n\x03\x04\x07\x01\x12\x03\x7f\x08\x10\n\x0c\n\ -- \x04\x04\x07\x02\0\x12\x04\x80\x01\x04\x1f\n\r\n\x05\x04\x07\x02\0\x04\ -- \x12\x04\x80\x01\x04\x0c\n\r\n\x05\x04\x07\x02\0\x05\x12\x04\x80\x01\r\ -- \x13\n\r\n\x05\x04\x07\x02\0\x01\x12\x04\x80\x01\x14\x18\n\r\n\x05\x04\ -- \x07\x02\0\x03\x12\x04\x80\x01\x1b\x1e\n\x0c\n\x04\x04\x07\x02\x01\x12\ -- \x04\x81\x01\x04#\n\r\n\x05\x04\x07\x02\x01\x04\x12\x04\x81\x01\x04\x0c\ -- \n\r\n\x05\x04\x07\x02\x01\x05\x12\x04\x81\x01\r\x13\n\r\n\x05\x04\x07\ -- \x02\x01\x01\x12\x04\x81\x01\x14\x1c\n\r\n\x05\x04\x07\x02\x01\x03\x12\ -- \x04\x81\x01\x1f\"\ -+ \x0b\x12\x0b\n\x07kHidden\x10\x0c\x12\x17\n\x13kSupportsPlaylistV2\x10\r\ -+ *d\n\nPlayStatus\x12\x13\n\x0fkPlayStatusStop\x10\0\x12\x13\n\x0fkPlaySt\ -+ atusPlay\x10\x01\x12\x14\n\x10kPlayStatusPause\x10\x02\x12\x16\n\x12kPla\ -+ yStatusLoading\x10\x03J\xea.\n\x07\x12\x05\0\0\x83\x01\x01\n\x08\n\x01\ -+ \x0c\x12\x03\0\0\x12\n\n\n\x02\x04\0\x12\x04\x02\0\x12\x01\n\n\n\x03\x04\ -+ \0\x01\x12\x03\x02\x08\r\n\x0b\n\x04\x04\0\x02\0\x12\x03\x03\x04\"\n\x0c\ -+ \n\x05\x04\0\x02\0\x04\x12\x03\x03\x04\x0c\n\x0c\n\x05\x04\0\x02\0\x05\ -+ \x12\x03\x03\r\x13\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x03\x14\x1b\n\x0c\ -+ \n\x05\x04\0\x02\0\x03\x12\x03\x03\x1e!\n\x0b\n\x04\x04\0\x02\x01\x12\ -+ \x03\x04\x04\x20\n\x0c\n\x05\x04\0\x02\x01\x04\x12\x03\x04\x04\x0c\n\x0c\ -+ \n\x05\x04\0\x02\x01\x05\x12\x03\x04\r\x13\n\x0c\n\x05\x04\0\x02\x01\x01\ -+ \x12\x03\x04\x14\x19\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x04\x1c\x1f\n\ -+ \x0b\n\x04\x04\0\x02\x02\x12\x03\x05\x04+\n\x0c\n\x05\x04\0\x02\x02\x04\ -+ \x12\x03\x05\x04\x0c\n\x0c\n\x05\x04\0\x02\x02\x05\x12\x03\x05\r\x13\n\ -+ \x0c\n\x05\x04\0\x02\x02\x01\x12\x03\x05\x14$\n\x0c\n\x05\x04\0\x02\x02\ -+ \x03\x12\x03\x05'*\n\x0b\n\x04\x04\0\x02\x03\x12\x03\x06\x04!\n\x0c\n\ -+ \x05\x04\0\x02\x03\x04\x12\x03\x06\x04\x0c\n\x0c\n\x05\x04\0\x02\x03\x05\ -+ \x12\x03\x06\r\x13\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03\x06\x14\x1a\n\ -+ \x0c\n\x05\x04\0\x02\x03\x03\x12\x03\x06\x1d\x20\n\x0b\n\x04\x04\0\x02\ -+ \x04\x12\x03\x07\x04#\n\x0c\n\x05\x04\0\x02\x04\x04\x12\x03\x07\x04\x0c\ -+ \n\x0c\n\x05\x04\0\x02\x04\x06\x12\x03\x07\r\x18\n\x0c\n\x05\x04\0\x02\ -+ \x04\x01\x12\x03\x07\x19\x1c\n\x0c\n\x05\x04\0\x02\x04\x03\x12\x03\x07\ -+ \x1f\"\n\x0b\n\x04\x04\0\x02\x05\x12\x03\x08\x04,\n\x0c\n\x05\x04\0\x02\ -+ \x05\x04\x12\x03\x08\x04\x0c\n\x0c\n\x05\x04\0\x02\x05\x06\x12\x03\x08\r\ -+ \x18\n\x0c\n\x05\x04\0\x02\x05\x01\x12\x03\x08\x19%\n\x0c\n\x05\x04\0\ -+ \x02\x05\x03\x12\x03\x08(+\n\x0b\n\x04\x04\0\x02\x06\x12\x03\t\x04#\n\ -+ \x0c\n\x05\x04\0\x02\x06\x04\x12\x03\t\x04\x0c\n\x0c\n\x05\x04\0\x02\x06\ -+ \x06\x12\x03\t\r\x14\n\x0c\n\x05\x04\0\x02\x06\x01\x12\x03\t\x15\x1c\n\ -+ \x0c\n\x05\x04\0\x02\x06\x03\x12\x03\t\x1f\"\n\x0b\n\x04\x04\0\x02\x07\ -+ \x12\x03\n\x04\x1f\n\x0c\n\x05\x04\0\x02\x07\x04\x12\x03\n\x04\x0c\n\x0c\ -+ \n\x05\x04\0\x02\x07\x06\x12\x03\n\r\x12\n\x0c\n\x05\x04\0\x02\x07\x01\ -+ \x12\x03\n\x13\x18\n\x0c\n\x05\x04\0\x02\x07\x03\x12\x03\n\x1b\x1e\n\x0b\ -+ \n\x04\x04\0\x02\x08\x12\x03\x0b\x04#\n\x0c\n\x05\x04\0\x02\x08\x04\x12\ -+ \x03\x0b\x04\x0c\n\x0c\n\x05\x04\0\x02\x08\x05\x12\x03\x0b\r\x13\n\x0c\n\ -+ \x05\x04\0\x02\x08\x01\x12\x03\x0b\x14\x1c\n\x0c\n\x05\x04\0\x02\x08\x03\ -+ \x12\x03\x0b\x1f\"\n\x0b\n\x04\x04\0\x02\t\x12\x03\x0c\x04!\n\x0c\n\x05\ -+ \x04\0\x02\t\x04\x12\x03\x0c\x04\x0c\n\x0c\n\x05\x04\0\x02\t\x05\x12\x03\ -+ \x0c\r\x13\n\x0c\n\x05\x04\0\x02\t\x01\x12\x03\x0c\x14\x1a\n\x0c\n\x05\ -+ \x04\0\x02\t\x03\x12\x03\x0c\x1d\x20\n\x0b\n\x04\x04\0\x02\n\x12\x03\r\ -+ \x04*\n\x0c\n\x05\x04\0\x02\n\x04\x12\x03\r\x04\x0c\n\x0c\n\x05\x04\0\ -+ \x02\n\x05\x12\x03\r\r\x12\n\x0c\n\x05\x04\0\x02\n\x01\x12\x03\r\x13\"\n\ -+ \x0c\n\x05\x04\0\x02\n\x03\x12\x03\r%)\n\x0b\n\x04\x04\0\x02\x0b\x12\x03\ -+ \x0e\x04%\n\x0c\n\x05\x04\0\x02\x0b\x04\x12\x03\x0e\x04\x0c\n\x0c\n\x05\ -+ \x04\0\x02\x0b\x05\x12\x03\x0e\r\x13\n\x0c\n\x05\x04\0\x02\x0b\x01\x12\ -+ \x03\x0e\x14\x1d\n\x0c\n\x05\x04\0\x02\x0b\x03\x12\x03\x0e\x20$\n\x0b\n\ -+ \x04\x04\0\x02\x0c\x12\x03\x0f\x04/\n\x0c\n\x05\x04\0\x02\x0c\x04\x12\ -+ \x03\x0f\x04\x0c\n\x0c\n\x05\x04\0\x02\x0c\x05\x12\x03\x0f\r\x12\n\x0c\n\ -+ \x05\x04\0\x02\x0c\x01\x12\x03\x0f\x13'\n\x0c\n\x05\x04\0\x02\x0c\x03\ -+ \x12\x03\x0f*.\n\x0b\n\x04\x04\0\x02\r\x12\x03\x10\x04$\n\x0c\n\x05\x04\ -+ \0\x02\r\x04\x12\x03\x10\x04\x0c\n\x0c\n\x05\x04\0\x02\r\x05\x12\x03\x10\ -+ \r\x13\n\x0c\n\x05\x04\0\x02\r\x01\x12\x03\x10\x14\x1c\n\x0c\n\x05\x04\0\ -+ \x02\r\x03\x12\x03\x10\x1f#\n\x0b\n\x04\x04\0\x02\x0e\x12\x03\x11\x04&\n\ -+ \x0c\n\x05\x04\0\x02\x0e\x04\x12\x03\x11\x04\x0c\n\x0c\n\x05\x04\0\x02\ -+ \x0e\x06\x12\x03\x11\r\x15\n\x0c\n\x05\x04\0\x02\x0e\x01\x12\x03\x11\x16\ -+ \x1e\n\x0c\n\x05\x04\0\x02\x0e\x03\x12\x03\x11!%\n\n\n\x02\x05\0\x12\x04\ -+ \x14\0*\x01\n\n\n\x03\x05\0\x01\x12\x03\x14\x05\x10\n\x0b\n\x04\x05\0\ -+ \x02\0\x12\x03\x15\x04\x1c\n\x0c\n\x05\x05\0\x02\0\x01\x12\x03\x15\x04\ -+ \x15\n\x0c\n\x05\x05\0\x02\0\x02\x12\x03\x15\x18\x1b\n\x0b\n\x04\x05\0\ -+ \x02\x01\x12\x03\x16\x04\x1e\n\x0c\n\x05\x05\0\x02\x01\x01\x12\x03\x16\ -+ \x04\x17\n\x0c\n\x05\x05\0\x02\x01\x02\x12\x03\x16\x1a\x1d\n\x0b\n\x04\ -+ \x05\0\x02\x02\x12\x03\x17\x04\x1c\n\x0c\n\x05\x05\0\x02\x02\x01\x12\x03\ -+ \x17\x04\x15\n\x0c\n\x05\x05\0\x02\x02\x02\x12\x03\x17\x18\x1b\n\x0b\n\ -+ \x04\x05\0\x02\x03\x12\x03\x18\x04\x1d\n\x0c\n\x05\x05\0\x02\x03\x01\x12\ -+ \x03\x18\x04\x16\n\x0c\n\x05\x05\0\x02\x03\x02\x12\x03\x18\x19\x1c\n\x0b\ -+ \n\x04\x05\0\x02\x04\x12\x03\x19\x04\x1c\n\x0c\n\x05\x05\0\x02\x04\x01\ -+ \x12\x03\x19\x04\x14\n\x0c\n\x05\x05\0\x02\x04\x02\x12\x03\x19\x17\x1b\n\ -+ \x0b\n\x04\x05\0\x02\x05\x12\x03\x1a\x04\x1c\n\x0c\n\x05\x05\0\x02\x05\ -+ \x01\x12\x03\x1a\x04\x14\n\x0c\n\x05\x05\0\x02\x05\x02\x12\x03\x1a\x17\ -+ \x1b\n\x0b\n\x04\x05\0\x02\x06\x12\x03\x1b\x04\x1d\n\x0c\n\x05\x05\0\x02\ -+ \x06\x01\x12\x03\x1b\x04\x15\n\x0c\n\x05\x05\0\x02\x06\x02\x12\x03\x1b\ -+ \x18\x1c\n\x0b\n\x04\x05\0\x02\x07\x12\x03\x1c\x04!\n\x0c\n\x05\x05\0\ -+ \x02\x07\x01\x12\x03\x1c\x04\x19\n\x0c\n\x05\x05\0\x02\x07\x02\x12\x03\ -+ \x1c\x1c\x20\n\x0b\n\x04\x05\0\x02\x08\x12\x03\x1d\x04\x1c\n\x0c\n\x05\ -+ \x05\0\x02\x08\x01\x12\x03\x1d\x04\x14\n\x0c\n\x05\x05\0\x02\x08\x02\x12\ -+ \x03\x1d\x17\x1b\n\x0b\n\x04\x05\0\x02\t\x12\x03\x1e\x04\x1c\n\x0c\n\x05\ -+ \x05\0\x02\t\x01\x12\x03\x1e\x04\x14\n\x0c\n\x05\x05\0\x02\t\x02\x12\x03\ -+ \x1e\x17\x1b\n\x0b\n\x04\x05\0\x02\n\x12\x03\x1f\x04\x1c\n\x0c\n\x05\x05\ -+ \0\x02\n\x01\x12\x03\x1f\x04\x14\n\x0c\n\x05\x05\0\x02\n\x02\x12\x03\x1f\ -+ \x17\x1b\n\x0b\n\x04\x05\0\x02\x0b\x12\x03\x20\x04\x1e\n\x0c\n\x05\x05\0\ -+ \x02\x0b\x01\x12\x03\x20\x04\x16\n\x0c\n\x05\x05\0\x02\x0b\x02\x12\x03\ -+ \x20\x19\x1d\n\x0b\n\x04\x05\0\x02\x0c\x12\x03!\x04\x1f\n\x0c\n\x05\x05\ -+ \0\x02\x0c\x01\x12\x03!\x04\x17\n\x0c\n\x05\x05\0\x02\x0c\x02\x12\x03!\ -+ \x1a\x1e\n\x0b\n\x04\x05\0\x02\r\x12\x03\"\x04\x1e\n\x0c\n\x05\x05\0\x02\ -+ \r\x01\x12\x03\"\x04\x16\n\x0c\n\x05\x05\0\x02\r\x02\x12\x03\"\x19\x1d\n\ -+ \x0b\n\x04\x05\0\x02\x0e\x12\x03#\x04\"\n\x0c\n\x05\x05\0\x02\x0e\x01\ -+ \x12\x03#\x04\x1a\n\x0c\n\x05\x05\0\x02\x0e\x02\x12\x03#\x1d!\n\x0b\n\ -+ \x04\x05\0\x02\x0f\x12\x03$\x04\x20\n\x0c\n\x05\x05\0\x02\x0f\x01\x12\ -+ \x03$\x04\x18\n\x0c\n\x05\x05\0\x02\x0f\x02\x12\x03$\x1b\x1f\n\x0b\n\x04\ -+ \x05\0\x02\x10\x12\x03%\x04\x1f\n\x0c\n\x05\x05\0\x02\x10\x01\x12\x03%\ -+ \x04\x17\n\x0c\n\x05\x05\0\x02\x10\x02\x12\x03%\x1a\x1e\n\x0b\n\x04\x05\ -+ \0\x02\x11\x12\x03&\x04\x1e\n\x0c\n\x05\x05\0\x02\x11\x01\x12\x03&\x04\ -+ \x16\n\x0c\n\x05\x05\0\x02\x11\x02\x12\x03&\x19\x1d\n\x0b\n\x04\x05\0\ -+ \x02\x12\x12\x03'\x04\x1e\n\x0c\n\x05\x05\0\x02\x12\x01\x12\x03'\x04\x16\ -+ \n\x0c\n\x05\x05\0\x02\x12\x02\x12\x03'\x19\x1d\n\x0b\n\x04\x05\0\x02\ -+ \x13\x12\x03(\x04\x1e\n\x0c\n\x05\x05\0\x02\x13\x01\x12\x03(\x04\x16\n\ -+ \x0c\n\x05\x05\0\x02\x13\x02\x12\x03(\x19\x1d\n\x0b\n\x04\x05\0\x02\x14\ -+ \x12\x03)\x04&\n\x0c\n\x05\x05\0\x02\x14\x01\x12\x03)\x04\x1e\n\x0c\n\ -+ \x05\x05\0\x02\x14\x02\x12\x03)!%\n\n\n\x02\x04\x01\x12\x04,\08\x01\n\n\ -+ \n\x03\x04\x01\x01\x12\x03,\x08\x13\n\x0b\n\x04\x04\x01\x02\0\x12\x03-\ -+ \x04%\n\x0c\n\x05\x04\x01\x02\0\x04\x12\x03-\x04\x0c\n\x0c\n\x05\x04\x01\ -+ \x02\0\x05\x12\x03-\r\x13\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03-\x14\x1e\ -+ \n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03-!$\n\x0b\n\x04\x04\x01\x02\x01\ -+ \x12\x03.\x04\"\n\x0c\n\x05\x04\x01\x02\x01\x04\x12\x03.\x04\x0c\n\x0c\n\ -+ \x05\x04\x01\x02\x01\x05\x12\x03.\r\x11\n\x0c\n\x05\x04\x01\x02\x01\x01\ -+ \x12\x03.\x12\x1b\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03.\x1e!\n\x0b\n\ -+ \x04\x04\x01\x02\x02\x12\x03/\x04!\n\x0c\n\x05\x04\x01\x02\x02\x04\x12\ -+ \x03/\x04\x0c\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03/\r\x11\n\x0c\n\x05\ -+ \x04\x01\x02\x02\x01\x12\x03/\x12\x1a\n\x0c\n\x05\x04\x01\x02\x02\x03\ -+ \x12\x03/\x1d\x20\n\x0b\n\x04\x04\x01\x02\x03\x12\x030\x04!\n\x0c\n\x05\ -+ \x04\x01\x02\x03\x04\x12\x030\x04\x0c\n\x0c\n\x05\x04\x01\x02\x03\x05\ -+ \x12\x030\r\x13\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\x030\x14\x1a\n\x0c\n\ -+ \x05\x04\x01\x02\x03\x03\x12\x030\x1d\x20\n\x0b\n\x04\x04\x01\x02\x04\ -+ \x12\x031\x04\x1f\n\x0c\n\x05\x04\x01\x02\x04\x04\x12\x031\x04\x0c\n\x0c\ -+ \n\x05\x04\x01\x02\x04\x05\x12\x031\r\x13\n\x0c\n\x05\x04\x01\x02\x04\ -+ \x01\x12\x031\x14\x18\n\x0c\n\x05\x04\x01\x02\x04\x03\x12\x031\x1b\x1e\n\ -+ \x0b\n\x04\x04\x01\x02\x05\x12\x032\x04%\n\x0c\n\x05\x04\x01\x02\x05\x04\ -+ \x12\x032\x04\x0c\n\x0c\n\x05\x04\x01\x02\x05\x05\x12\x032\r\x13\n\x0c\n\ -+ \x05\x04\x01\x02\x05\x01\x12\x032\x14\x1e\n\x0c\n\x05\x04\x01\x02\x05\ -+ \x03\x12\x032!$\n\x0b\n\x04\x04\x01\x02\x06\x12\x033\x04*\n\x0c\n\x05\ -+ \x04\x01\x02\x06\x04\x12\x033\x04\x0c\n\x0c\n\x05\x04\x01\x02\x06\x05\ -+ \x12\x033\r\x12\n\x0c\n\x05\x04\x01\x02\x06\x01\x12\x033\x13#\n\x0c\n\ -+ \x05\x04\x01\x02\x06\x03\x12\x033&)\n\x0b\n\x04\x04\x01\x02\x07\x12\x034\ -+ \x04)\n\x0c\n\x05\x04\x01\x02\x07\x04\x12\x034\x04\x0c\n\x0c\n\x05\x04\ -+ \x01\x02\x07\x05\x12\x034\r\x13\n\x0c\n\x05\x04\x01\x02\x07\x01\x12\x034\ -+ \x14!\n\x0c\n\x05\x04\x01\x02\x07\x03\x12\x034$(\n\x0b\n\x04\x04\x01\x02\ -+ \x08\x12\x035\x04,\n\x0c\n\x05\x04\x01\x02\x08\x04\x12\x035\x04\x0c\n\ -+ \x0c\n\x05\x04\x01\x02\x08\x06\x12\x035\r\x17\n\x0c\n\x05\x04\x01\x02\ -+ \x08\x01\x12\x035\x18$\n\x0c\n\x05\x04\x01\x02\x08\x03\x12\x035'+\n\x0b\ -+ \n\x04\x04\x01\x02\t\x12\x036\x040\n\x0c\n\x05\x04\x01\x02\t\x04\x12\x03\ -+ 6\x04\x0c\n\x0c\n\x05\x04\x01\x02\t\x05\x12\x036\r\x13\n\x0c\n\x05\x04\ -+ \x01\x02\t\x01\x12\x036\x14(\n\x0c\n\x05\x04\x01\x02\t\x03\x12\x036+/\n\ -+ \x0b\n\x04\x04\x01\x02\n\x12\x037\x04&\n\x0c\n\x05\x04\x01\x02\n\x04\x12\ -+ \x037\x04\x0c\n\x0c\n\x05\x04\x01\x02\n\x06\x12\x037\r\x15\n\x0c\n\x05\ -+ \x04\x01\x02\n\x01\x12\x037\x16\x1e\n\x0c\n\x05\x04\x01\x02\n\x03\x12\ -+ \x037!%\n\n\n\x02\x04\x02\x12\x04:\0>\x01\n\n\n\x03\x04\x02\x01\x12\x03:\ -+ \x08\x12\n\x0b\n\x04\x04\x02\x02\0\x12\x03;\x04&\n\x0c\n\x05\x04\x02\x02\ -+ \0\x04\x12\x03;\x04\x0c\n\x0c\n\x05\x04\x02\x02\0\x06\x12\x03;\r\x1b\n\ -+ \x0c\n\x05\x04\x02\x02\0\x01\x12\x03;\x1c\x1f\n\x0c\n\x05\x04\x02\x02\0\ -+ \x03\x12\x03;\"%\n\x0b\n\x04\x04\x02\x02\x01\x12\x03<\x04\"\n\x0c\n\x05\ -+ \x04\x02\x02\x01\x04\x12\x03<\x04\x0c\n\x0c\n\x05\x04\x02\x02\x01\x05\ -+ \x12\x03<\r\x12\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03<\x13\x1b\n\x0c\n\ -+ \x05\x04\x02\x02\x01\x03\x12\x03<\x1e!\n\x0b\n\x04\x04\x02\x02\x02\x12\ -+ \x03=\x04&\n\x0c\n\x05\x04\x02\x02\x02\x04\x12\x03=\x04\x0c\n\x0c\n\x05\ -+ \x04\x02\x02\x02\x05\x12\x03=\r\x13\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\ -+ \x03=\x14\x1f\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03=\"%\n\n\n\x02\x05\ -+ \x01\x12\x04@\0N\x01\n\n\n\x03\x05\x01\x01\x12\x03@\x05\x13\n\x0b\n\x04\ -+ \x05\x01\x02\0\x12\x03A\x04\x1d\n\x0c\n\x05\x05\x01\x02\0\x01\x12\x03A\ -+ \x04\x16\n\x0c\n\x05\x05\x01\x02\0\x02\x12\x03A\x19\x1c\n\x0b\n\x04\x05\ -+ \x01\x02\x01\x12\x03B\x04\x17\n\x0c\n\x05\x05\x01\x02\x01\x01\x12\x03B\ -+ \x04\x10\n\x0c\n\x05\x05\x01\x02\x01\x02\x12\x03B\x13\x16\n\x0b\n\x04\ -+ \x05\x01\x02\x02\x12\x03C\x04\x1b\n\x0c\n\x05\x05\x01\x02\x02\x01\x12\ -+ \x03C\x04\x14\n\x0c\n\x05\x05\x01\x02\x02\x02\x12\x03C\x17\x1a\n\x0b\n\ -+ \x04\x05\x01\x02\x03\x12\x03D\x04\x16\n\x0c\n\x05\x05\x01\x02\x03\x01\ -+ \x12\x03D\x04\x0f\n\x0c\n\x05\x05\x01\x02\x03\x02\x12\x03D\x12\x15\n\x0b\ -+ \n\x04\x05\x01\x02\x04\x12\x03E\x04\x1b\n\x0c\n\x05\x05\x01\x02\x04\x01\ -+ \x12\x03E\x04\x14\n\x0c\n\x05\x05\x01\x02\x04\x02\x12\x03E\x17\x1a\n\x0b\ -+ \n\x04\x05\x01\x02\x05\x12\x03F\x04\x1a\n\x0c\n\x05\x05\x01\x02\x05\x01\ -+ \x12\x03F\x04\x13\n\x0c\n\x05\x05\x01\x02\x05\x02\x12\x03F\x16\x19\n\x0b\ -+ \n\x04\x05\x01\x02\x06\x12\x03G\x04\x18\n\x0c\n\x05\x05\x01\x02\x06\x01\ -+ \x12\x03G\x04\x11\n\x0c\n\x05\x05\x01\x02\x06\x02\x12\x03G\x14\x17\n\x0b\ -+ \n\x04\x05\x01\x02\x07\x12\x03H\x04\x17\n\x0c\n\x05\x05\x01\x02\x07\x01\ -+ \x12\x03H\x04\x10\n\x0c\n\x05\x05\x01\x02\x07\x02\x12\x03H\x13\x16\n\x0b\ -+ \n\x04\x05\x01\x02\x08\x12\x03I\x04\x1a\n\x0c\n\x05\x05\x01\x02\x08\x01\ -+ \x12\x03I\x04\x13\n\x0c\n\x05\x05\x01\x02\x08\x02\x12\x03I\x16\x19\n\x0b\ -+ \n\x04\x05\x01\x02\t\x12\x03J\x04\x17\n\x0c\n\x05\x05\x01\x02\t\x01\x12\ -+ \x03J\x04\x10\n\x0c\n\x05\x05\x01\x02\t\x02\x12\x03J\x13\x16\n\x0b\n\x04\ -+ \x05\x01\x02\n\x12\x03K\x04\x1a\n\x0c\n\x05\x05\x01\x02\n\x01\x12\x03K\ -+ \x04\x13\n\x0c\n\x05\x05\x01\x02\n\x02\x12\x03K\x16\x19\n\x0b\n\x04\x05\ -+ \x01\x02\x0b\x12\x03L\x04\x12\n\x0c\n\x05\x05\x01\x02\x0b\x01\x12\x03L\ -+ \x04\x0b\n\x0c\n\x05\x05\x01\x02\x0b\x02\x12\x03L\x0e\x11\n\x0b\n\x04\ -+ \x05\x01\x02\x0c\x12\x03M\x04\x1e\n\x0c\n\x05\x05\x01\x02\x0c\x01\x12\ -+ \x03M\x04\x17\n\x0c\n\x05\x05\x01\x02\x0c\x02\x12\x03M\x1a\x1d\n\n\n\x02\ -+ \x04\x03\x12\x04P\0R\x01\n\n\n\x03\x04\x03\x01\x12\x03P\x08\x0f\n\x0b\n\ -+ \x04\x04\x03\x02\0\x12\x03Q\x04!\n\x0c\n\x05\x04\x03\x02\0\x04\x12\x03Q\ -+ \x04\x0c\n\x0c\n\x05\x04\x03\x02\0\x05\x12\x03Q\r\x13\n\x0c\n\x05\x04\ -+ \x03\x02\0\x01\x12\x03Q\x14\x1a\n\x0c\n\x05\x04\x03\x02\0\x03\x12\x03Q\ -+ \x1d\x20\n\n\n\x02\x04\x04\x12\x04T\0d\x01\n\n\n\x03\x04\x04\x01\x12\x03\ -+ T\x08\r\n\x0b\n\x04\x04\x04\x02\0\x12\x03U\x04&\n\x0c\n\x05\x04\x04\x02\ -+ \0\x04\x12\x03U\x04\x0c\n\x0c\n\x05\x04\x04\x02\0\x05\x12\x03U\r\x13\n\ -+ \x0c\n\x05\x04\x04\x02\0\x01\x12\x03U\x14\x1f\n\x0c\n\x05\x04\x04\x02\0\ -+ \x03\x12\x03U\"%\n\x0b\n\x04\x04\x04\x02\x01\x12\x03V\x04\x20\n\x0c\n\ -+ \x05\x04\x04\x02\x01\x04\x12\x03V\x04\x0c\n\x0c\n\x05\x04\x04\x02\x01\ -+ \x05\x12\x03V\r\x13\n\x0c\n\x05\x04\x04\x02\x01\x01\x12\x03V\x14\x19\n\ -+ \x0c\n\x05\x04\x04\x02\x01\x03\x12\x03V\x1c\x1f\n\x0b\n\x04\x04\x04\x02\ -+ \x02\x12\x03W\x04&\n\x0c\n\x05\x04\x04\x02\x02\x04\x12\x03W\x04\x0c\n\ -+ \x0c\n\x05\x04\x04\x02\x02\x05\x12\x03W\r\x13\n\x0c\n\x05\x04\x04\x02\ -+ \x02\x01\x12\x03W\x14\x1f\n\x0c\n\x05\x04\x04\x02\x02\x03\x12\x03W\"%\n\ -+ \x0b\n\x04\x04\x04\x02\x03\x12\x03X\x04%\n\x0c\n\x05\x04\x04\x02\x03\x04\ -+ \x12\x03X\x04\x0c\n\x0c\n\x05\x04\x04\x02\x03\x06\x12\x03X\r\x17\n\x0c\n\ -+ \x05\x04\x04\x02\x03\x01\x12\x03X\x18\x1e\n\x0c\n\x05\x04\x04\x02\x03\ -+ \x03\x12\x03X!$\n\x0b\n\x04\x04\x04\x02\x04\x12\x03Y\x04/\n\x0c\n\x05\ -+ \x04\x04\x02\x04\x04\x12\x03Y\x04\x0c\n\x0c\n\x05\x04\x04\x02\x04\x05\ -+ \x12\x03Y\r\x13\n\x0c\n\x05\x04\x04\x02\x04\x01\x12\x03Y\x14(\n\x0c\n\ -+ \x05\x04\x04\x02\x04\x03\x12\x03Y+.\n\x0b\n\x04\x04\x04\x02\x05\x12\x03Z\ -+ \x04.\n\x0c\n\x05\x04\x04\x02\x05\x04\x12\x03Z\x04\x0c\n\x0c\n\x05\x04\ -+ \x04\x02\x05\x05\x12\x03Z\r\x13\n\x0c\n\x05\x04\x04\x02\x05\x01\x12\x03Z\ -+ \x14'\n\x0c\n\x05\x04\x04\x02\x05\x03\x12\x03Z*-\n\x0b\n\x04\x04\x04\x02\ -+ \x06\x12\x03[\x04\x20\n\x0c\n\x05\x04\x04\x02\x06\x04\x12\x03[\x04\x0c\n\ -+ \x0c\n\x05\x04\x04\x02\x06\x05\x12\x03[\r\x11\n\x0c\n\x05\x04\x04\x02\ -+ \x06\x01\x12\x03[\x12\x19\n\x0c\n\x05\x04\x04\x02\x06\x03\x12\x03[\x1c\ -+ \x1f\n\x0b\n\x04\x04\x04\x02\x07\x12\x03\\\x04\x1f\n\x0c\n\x05\x04\x04\ -+ \x02\x07\x04\x12\x03\\\x04\x0c\n\x0c\n\x05\x04\x04\x02\x07\x05\x12\x03\\\ -+ \r\x11\n\x0c\n\x05\x04\x04\x02\x07\x01\x12\x03\\\x12\x18\n\x0c\n\x05\x04\ -+ \x04\x02\x07\x03\x12\x03\\\x1b\x1e\n\x0b\n\x04\x04\x04\x02\x08\x12\x03]\ -+ \x04.\n\x0c\n\x05\x04\x04\x02\x08\x04\x12\x03]\x04\x0c\n\x0c\n\x05\x04\ -+ \x04\x02\x08\x05\x12\x03]\r\x13\n\x0c\n\x05\x04\x04\x02\x08\x01\x12\x03]\ -+ \x14&\n\x0c\n\x05\x04\x04\x02\x08\x03\x12\x03])-\n\x0b\n\x04\x04\x04\x02\ -+ \t\x12\x03^\x04.\n\x0c\n\x05\x04\x04\x02\t\x04\x12\x03^\x04\x0c\n\x0c\n\ -+ \x05\x04\x04\x02\t\x05\x12\x03^\r\x13\n\x0c\n\x05\x04\x04\x02\t\x01\x12\ -+ \x03^\x14&\n\x0c\n\x05\x04\x04\x02\t\x03\x12\x03^)-\n\x0b\n\x04\x04\x04\ -+ \x02\n\x12\x03_\x04/\n\x0c\n\x05\x04\x04\x02\n\x04\x12\x03_\x04\x0c\n\ -+ \x0c\n\x05\x04\x04\x02\n\x05\x12\x03_\r\x11\n\x0c\n\x05\x04\x04\x02\n\ -+ \x01\x12\x03_\x12'\n\x0c\n\x05\x04\x04\x02\n\x03\x12\x03_*.\n\x0b\n\x04\ -+ \x04\x04\x02\x0b\x12\x03`\x04\x1f\n\x0c\n\x05\x04\x04\x02\x0b\x04\x12\ -+ \x03`\x04\x0c\n\x0c\n\x05\x04\x04\x02\x0b\x05\x12\x03`\r\x13\n\x0c\n\x05\ -+ \x04\x04\x02\x0b\x01\x12\x03`\x14\x17\n\x0c\n\x05\x04\x04\x02\x0b\x03\ -+ \x12\x03`\x1a\x1e\n\x0b\n\x04\x04\x04\x02\x0c\x12\x03a\x04/\n\x0c\n\x05\ -+ \x04\x04\x02\x0c\x04\x12\x03a\x04\x0c\n\x0c\n\x05\x04\x04\x02\x0c\x05\ -+ \x12\x03a\r\x13\n\x0c\n\x05\x04\x04\x02\x0c\x01\x12\x03a\x14'\n\x0c\n\ -+ \x05\x04\x04\x02\x0c\x03\x12\x03a*.\n\x0b\n\x04\x04\x04\x02\r\x12\x03b\ -+ \x04#\n\x0c\n\x05\x04\x04\x02\r\x04\x12\x03b\x04\x0c\n\x0c\n\x05\x04\x04\ -+ \x02\r\x06\x12\x03b\r\x15\n\x0c\n\x05\x04\x04\x02\r\x01\x12\x03b\x16\x1b\ -+ \n\x0c\n\x05\x04\x04\x02\r\x03\x12\x03b\x1e\"\n\x0b\n\x04\x04\x04\x02\ -+ \x0e\x12\x03c\x04\x1a\n\x0c\n\x05\x04\x04\x02\x0e\x04\x12\x03c\x04\x0c\n\ -+ \x0c\n\x05\x04\x04\x02\x0e\x06\x12\x03c\r\x0f\n\x0c\n\x05\x04\x04\x02\ -+ \x0e\x01\x12\x03c\x10\x12\n\x0c\n\x05\x04\x04\x02\x0e\x03\x12\x03c\x15\ -+ \x19\n\n\n\x02\x05\x02\x12\x04f\0k\x01\n\n\n\x03\x05\x02\x01\x12\x03f\ -+ \x05\x0f\n\x0b\n\x04\x05\x02\x02\0\x12\x03g\x04\x1a\n\x0c\n\x05\x05\x02\ -+ \x02\0\x01\x12\x03g\x04\x13\n\x0c\n\x05\x05\x02\x02\0\x02\x12\x03g\x16\ -+ \x19\n\x0b\n\x04\x05\x02\x02\x01\x12\x03h\x04\x1a\n\x0c\n\x05\x05\x02\ -+ \x02\x01\x01\x12\x03h\x04\x13\n\x0c\n\x05\x05\x02\x02\x01\x02\x12\x03h\ -+ \x16\x19\n\x0b\n\x04\x05\x02\x02\x02\x12\x03i\x04\x1b\n\x0c\n\x05\x05\ -+ \x02\x02\x02\x01\x12\x03i\x04\x14\n\x0c\n\x05\x05\x02\x02\x02\x02\x12\ -+ \x03i\x17\x1a\n\x0b\n\x04\x05\x02\x02\x03\x12\x03j\x04\x1d\n\x0c\n\x05\ -+ \x05\x02\x02\x03\x01\x12\x03j\x04\x16\n\x0c\n\x05\x05\x02\x02\x03\x02\ -+ \x12\x03j\x19\x1c\n\n\n\x02\x04\x05\x12\x04m\0r\x01\n\n\n\x03\x04\x05\ -+ \x01\x12\x03m\x08\x10\n\x0b\n\x04\x04\x05\x02\0\x12\x03n\x04\x1d\n\x0c\n\ -+ \x05\x04\x05\x02\0\x04\x12\x03n\x04\x0c\n\x0c\n\x05\x04\x05\x02\0\x05\ -+ \x12\x03n\r\x12\n\x0c\n\x05\x04\x05\x02\0\x01\x12\x03n\x13\x16\n\x0c\n\ -+ \x05\x04\x05\x02\0\x03\x12\x03n\x19\x1c\n\x0b\n\x04\x04\x05\x02\x01\x12\ -+ \x03o\x04\x1e\n\x0c\n\x05\x04\x05\x02\x01\x04\x12\x03o\x04\x0c\n\x0c\n\ -+ \x05\x04\x05\x02\x01\x05\x12\x03o\r\x13\n\x0c\n\x05\x04\x05\x02\x01\x01\ -+ \x12\x03o\x14\x17\n\x0c\n\x05\x04\x05\x02\x01\x03\x12\x03o\x1a\x1d\n\x0b\ -+ \n\x04\x04\x05\x02\x02\x12\x03p\x04\x1f\n\x0c\n\x05\x04\x05\x02\x02\x04\ -+ \x12\x03p\x04\x0c\n\x0c\n\x05\x04\x05\x02\x02\x05\x12\x03p\r\x11\n\x0c\n\ -+ \x05\x04\x05\x02\x02\x01\x12\x03p\x12\x18\n\x0c\n\x05\x04\x05\x02\x02\ -+ \x03\x12\x03p\x1b\x1e\n\x0b\n\x04\x04\x05\x02\x03\x12\x03q\x04\"\n\x0c\n\ -+ \x05\x04\x05\x02\x03\x04\x12\x03q\x04\x0c\n\x0c\n\x05\x04\x05\x02\x03\ -+ \x05\x12\x03q\r\x13\n\x0c\n\x05\x04\x05\x02\x03\x01\x12\x03q\x14\x1b\n\ -+ \x0c\n\x05\x04\x05\x02\x03\x03\x12\x03q\x1e!\n\n\n\x02\x04\x06\x12\x04t\ -+ \0~\x01\n\n\n\x03\x04\x06\x01\x12\x03t\x08\n\n\x0b\n\x04\x04\x06\x02\0\ -+ \x12\x03u\x04\x1e\n\x0c\n\x05\x04\x06\x02\0\x04\x12\x03u\x04\x0c\n\x0c\n\ -+ \x05\x04\x06\x02\0\x05\x12\x03u\r\x12\n\x0c\n\x05\x04\x06\x02\0\x01\x12\ -+ \x03u\x13\x17\n\x0c\n\x05\x04\x06\x02\0\x03\x12\x03u\x1a\x1d\n\x0b\n\x04\ -+ \x04\x06\x02\x01\x12\x03v\x04!\n\x0c\n\x05\x04\x06\x02\x01\x04\x12\x03v\ -+ \x04\x0c\n\x0c\n\x05\x04\x06\x02\x01\x05\x12\x03v\r\x12\n\x0c\n\x05\x04\ -+ \x06\x02\x01\x01\x12\x03v\x13\x1a\n\x0c\n\x05\x04\x06\x02\x01\x03\x12\ -+ \x03v\x1d\x20\n\x0b\n\x04\x04\x06\x02\x02\x12\x03w\x04#\n\x0c\n\x05\x04\ -+ \x06\x02\x02\x04\x12\x03w\x04\x0c\n\x0c\n\x05\x04\x06\x02\x02\x05\x12\ -+ \x03w\r\x12\n\x0c\n\x05\x04\x06\x02\x02\x01\x12\x03w\x13\x1c\n\x0c\n\x05\ -+ \x04\x06\x02\x02\x03\x12\x03w\x1f\"\n\x0b\n\x04\x04\x06\x02\x03\x12\x03x\ -+ \x04\"\n\x0c\n\x05\x04\x06\x02\x03\x04\x12\x03x\x04\x0c\n\x0c\n\x05\x04\ -+ \x06\x02\x03\x05\x12\x03x\r\x12\n\x0c\n\x05\x04\x06\x02\x03\x01\x12\x03x\ -+ \x13\x1b\n\x0c\n\x05\x04\x06\x02\x03\x03\x12\x03x\x1e!\n\x0b\n\x04\x04\ -+ \x06\x02\x04\x12\x03y\x04$\n\x0c\n\x05\x04\x06\x02\x04\x04\x12\x03y\x04\ -+ \x0c\n\x0c\n\x05\x04\x06\x02\x04\x05\x12\x03y\r\x13\n\x0c\n\x05\x04\x06\ -+ \x02\x04\x01\x12\x03y\x14\x1d\n\x0c\n\x05\x04\x06\x02\x04\x03\x12\x03y\ -+ \x20#\n\x0b\n\x04\x04\x06\x02\x05\x12\x03z\x04)\n\x0c\n\x05\x04\x06\x02\ -+ \x05\x04\x12\x03z\x04\x0c\n\x0c\n\x05\x04\x06\x02\x05\x05\x12\x03z\r\x13\ -+ \n\x0c\n\x05\x04\x06\x02\x05\x01\x12\x03z\x14\"\n\x0c\n\x05\x04\x06\x02\ -+ \x05\x03\x12\x03z%(\n\x0b\n\x04\x04\x06\x02\x06\x12\x03{\x04\"\n\x0c\n\ -+ \x05\x04\x06\x02\x06\x04\x12\x03{\x04\x0c\n\x0c\n\x05\x04\x06\x02\x06\ -+ \x05\x12\x03{\r\x13\n\x0c\n\x05\x04\x06\x02\x06\x01\x12\x03{\x14\x1b\n\ -+ \x0c\n\x05\x04\x06\x02\x06\x03\x12\x03{\x1e!\n\x0b\n\x04\x04\x06\x02\x07\ -+ \x12\x03|\x04%\n\x0c\n\x05\x04\x06\x02\x07\x04\x12\x03|\x04\x0c\n\x0c\n\ -+ \x05\x04\x06\x02\x07\x05\x12\x03|\r\x13\n\x0c\n\x05\x04\x06\x02\x07\x01\ -+ \x12\x03|\x14\x1e\n\x0c\n\x05\x04\x06\x02\x07\x03\x12\x03|!$\n\x0b\n\x04\ -+ \x04\x06\x02\x08\x12\x03}\x04\x1d\n\x0c\n\x05\x04\x06\x02\x08\x04\x12\ -+ \x03}\x04\x0c\n\x0c\n\x05\x04\x06\x02\x08\x05\x12\x03}\r\x12\n\x0c\n\x05\ -+ \x04\x06\x02\x08\x01\x12\x03}\x13\x16\n\x0c\n\x05\x04\x06\x02\x08\x03\ -+ \x12\x03}\x19\x1c\n\x0c\n\x02\x04\x07\x12\x06\x80\x01\0\x83\x01\x01\n\ -+ \x0b\n\x03\x04\x07\x01\x12\x04\x80\x01\x08\x10\n\x0c\n\x04\x04\x07\x02\0\ -+ \x12\x04\x81\x01\x04\x1f\n\r\n\x05\x04\x07\x02\0\x04\x12\x04\x81\x01\x04\ -+ \x0c\n\r\n\x05\x04\x07\x02\0\x05\x12\x04\x81\x01\r\x13\n\r\n\x05\x04\x07\ -+ \x02\0\x01\x12\x04\x81\x01\x14\x18\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\ -+ \x81\x01\x1b\x1e\n\x0c\n\x04\x04\x07\x02\x01\x12\x04\x82\x01\x04#\n\r\n\ -+ \x05\x04\x07\x02\x01\x04\x12\x04\x82\x01\x04\x0c\n\r\n\x05\x04\x07\x02\ -+ \x01\x05\x12\x04\x82\x01\r\x13\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\x82\ -+ \x01\x14\x1c\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\x82\x01\x1f\"\ - "; - - static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy { diff --git a/packages/addons/service/librespot/source/bin/librespot.onevent b/packages/addons/service/librespot/source/bin/librespot.onevent new file mode 100755 index 0000000000..8966b5d6bc --- /dev/null +++ b/packages/addons/service/librespot/source/bin/librespot.onevent @@ -0,0 +1,2 @@ +#!/bin/sh +echo -e "$STATE\n$ARTIST\n$TITLE" > "$LS_FIFO" \ No newline at end of file diff --git a/packages/addons/service/librespot/source/bin/librespot.onstart b/packages/addons/service/librespot/source/bin/librespot.onstart deleted file mode 100644 index e1590efbcc..0000000000 --- a/packages/addons/service/librespot/source/bin/librespot.onstart +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo -e "play\n$LS_ARTIST\n$LS_TITLE" > "$LS_FIFO" diff --git a/packages/addons/service/librespot/source/bin/librespot.onstop b/packages/addons/service/librespot/source/bin/librespot.onstop deleted file mode 100644 index 594f6c4929..0000000000 --- a/packages/addons/service/librespot/source/bin/librespot.onstop +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo -e "stop" > "$LS_FIFO" diff --git a/packages/addons/service/librespot/source/bin/librespot.start b/packages/addons/service/librespot/source/bin/librespot.start index 2ec9cd7fd0..4e7c682784 100755 --- a/packages/addons/service/librespot/source/bin/librespot.start +++ b/packages/addons/service/librespot/source/bin/librespot.start @@ -86,10 +86,8 @@ oe_setup_addon service.librespot LIBRESPOT="librespot --cache \"$ADDON_HOME/cache\" \ --disable-audio-cache \ - --initial-volume "$ls_v" \ --name \"Librespot@$HOSTNAME\" \ - --onstart librespot.onstart \ - --onstop librespot.onstop" + --onevent librespot.onevent" if [ -n "$ls_b" -a "$ls_b" != "-" ]; then LIBRESPOT="$LIBRESPOT --bitrate $ls_b" diff --git a/packages/addons/service/librespot/source/default.py b/packages/addons/service/librespot/source/default.py index 4125273a6a..a38019ce9a 100644 --- a/packages/addons/service/librespot/source/default.py +++ b/packages/addons/service/librespot/source/default.py @@ -29,7 +29,6 @@ import xbmcgui PORT = '6666' SINK = 'librespot_sink' - def suspendSink(bit): subprocess.call(['pactl', 'suspend-sink', SINK, bit]) @@ -66,6 +65,8 @@ class Controller(threading.Thread): self.player.play() elif command[0] == 'stop': self.player.stop() + elif command[0] == 'pause': + self.player.pause() try: os.unlink(self.FIFO) except OSError: @@ -109,6 +110,10 @@ class Player(xbmc.Player): del listitem xbmcgui.Window(12006).show() + def pause(self): + if self.isPlaying() and self.getPlayingFile() == self.ITEM: + super(Player, self).pause() + def stop(self): suspendSink('1') if self.isPlaying() and self.getPlayingFile() == self.ITEM: diff --git a/packages/addons/service/librespot/source/resources/language/English/strings.po b/packages/addons/service/librespot/source/resources/language/English/strings.po index 6ab58f6669..7d99755b11 100644 --- a/packages/addons/service/librespot/source/resources/language/English/strings.po +++ b/packages/addons/service/librespot/source/resources/language/English/strings.po @@ -7,10 +7,6 @@ msgctxt "#30100" msgid "Librespot" msgstr "" -msgctxt "#30101" -msgid "Initial volume" -msgstr "" - msgctxt "#30102" msgid "Bit rate" msgstr "" diff --git a/packages/addons/service/librespot/source/resources/settings.xml b/packages/addons/service/librespot/source/resources/settings.xml index 2c0666c358..6c6984bb7e 100644 --- a/packages/addons/service/librespot/source/resources/settings.xml +++ b/packages/addons/service/librespot/source/resources/settings.xml @@ -1,7 +1,6 @@ - diff --git a/packages/addons/service/librespot/source/settings-default.xml b/packages/addons/service/librespot/source/settings-default.xml index b0d077dec2..3f68d80531 100644 --- a/packages/addons/service/librespot/source/settings-default.xml +++ b/packages/addons/service/librespot/source/settings-default.xml @@ -6,6 +6,5 @@ -