Implementing into.js

This commit is contained in:
Egor 2015-10-28 05:40:02 -07:00
parent 81f489dc69
commit 2ed71df90c
44 changed files with 621 additions and 111 deletions

View file

@ -6,7 +6,8 @@
"Dancer", "Dancer",
"ID3", "ID3",
"FileAPIReader", "FileAPIReader",
"SC" "SC",
"introJs"
], ],
"browser": true, "browser": true,
"boss": true, "boss": true,

View file

@ -1,17 +1,16 @@
# Huegasm # Huegasm
Music awesomeness for hue lights. Music awesomeness for hue lights.
# TODO # TODO
## FEATURES ## FEATURES
- app intro with intro.js
- microphone mode - microphone mode
- about, help page, youtube video - youtube video
## BUGS ## BUGS
- BUGS BUGS BUGS - BUGS BUGS BUGS
## POSSIBLE FEATURES ## POSSIBLE FUTURE FEATURES
- better visualizations
- beat settings by interval - beat settings by interval
- auto beat detection mode - auto beat detection mode
- display player time when hovering over seek bar - display player time when hovering over seek bar

View file

@ -35,11 +35,9 @@ export default Em.Component.extend({
}, },
didInsertElement: function() { didInsertElement: function() {
var self = this; Em.$(document).keypress((event) => {
if(!this.get('saveDisabled') && event.which === 13) {
Em.$(document).keypress(function(event) { this.send('save');
if(!self.get('saveDisabled') && event.which === 13) {
self.send('save');
} }
}); });
}, },

View file

@ -29,6 +29,120 @@ export default Em.Component.extend({
clearAllSettings() { clearAllSettings() {
this.get('storage').clear(); this.get('storage').clear();
location.reload(); location.reload();
},
startIntro(){
var intro = introJs(),
playerBottom = Em.$('#playerBottom');
intro.setOptions({
steps: [
{
element: '#musicTab',
intro: 'This is the music tab. Here you\'ll be able to play music and synchronize it with your active lights.<br><br>' +
'<i>TIP: Control which lights are active through the <b>Lights</b> tab or through the <b>Groups</b> menu dropdown.</i>'
},
{
element: '#playlist',
intro: 'You can add and select music to play from your playlist here. You may add local audio files, stream music from soundcloud or stream music into the application fromn your mic.<br><br>' +
'<i>TIP: Songs added through soundcloud will be saved for when you visit this page again.</i>'
},
{
element: '#playerArea',
intro: 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu ( eyeball in the bottom right ).'
},
{
element: '#beatOptionRow',
intro: 'Beat detection settings:<br>' +
'<b>Beat Threshold</b> - The minimum sound intensity for the beat to register<br>' +
'<b>Beat Interval</b> - The minimum amount of time between each registered beat <br>' +
'<b>Frequency Range</b> - The frequency range of the sound to listen on for the beat<br>' +
'<b>Transition Time</b> - The time it takes for a light to change color or brightness<br><br>' +
'<i>TIP: Beat settings are saved per song as indicated by the red start icon in the top left corner. These settings they will be restored if you ever listen to the same song again.</i>'
},
{
element: '#beatOptionButtonGroup',
intro: 'Some additional options:<br>' +
'<b>Default</b> - Revert to the default beat detection settings<br>' +
'<b>Random/Sequential</b> - The transition order of lights on beat<br>' +
'<b>Brightness/Brightness & Color</b> - The properties of the lights to change on beat<br><br>' +
'<i>TIP: Turn the colorloop \'on\' in the <b>Lights</b> tab and set only the brightness to change on beat for a cool visual effect.</i>'
},
{
element: '#beatContainer',
intro: 'An interactive speaker that will bump on a registered beat. Switch over to the <b>Debug View</b> to see the intesity of all the registered and unregistered beats.<br><br>' +
'<i>TIP: Click on the center of the speaker to simulate a beat.</i>'
},
{
element: '#lightsTab',
intro: 'This is the lights tab. Here you\'ll be able to change various light properties:<br>' +
'<b>Power</b> - The selected lights to be on/off<br>' +
'<b>Brightness</b> - The brightness level of the selected lights<br>' +
'<b>Color</b> - The color of the selected lights<br>' +
'<b>Strobe</b> - Selected lights will flash in sequential order<br>' +
'<b>Colorloop</b> - Selected lights will slowly cycle through all the colors<br>'
},
{
element: '#activeLights',
intro: 'These icons represent the hue lights in your system. Active lights will be controlled by the application while the inactive lights will have a red X over them and will not be controlled. You may toggle a light\'s active state by clicking on it'
},
{
element: Em.$('.settingsItem')[0],
intro: 'Groups allow for saving and selecting sets of lights.',
position: 'left'
},
{
element: Em.$('.settingsItem')[1],
intro: 'A few miscellaneous settings can be found here.<br><br>' +
'<b>WARNING:</b> clearing application settings will restore the application to its original state. This will even delete your playlist and any saved song beat preferences.',
position: 'left'
},
{
element: '#dimmerWrapper',
intro: 'Enjoy the application. ;) <br><br>' +
'<i>TIP: click on the lightbulb to turn off the lights.</i>',
position: 'top'
}
]
});
// it's not pretty but it works
intro.onchange((element) => {
this.set('dimmerOn', false);
if(element.id === 'musicTab' || element.id === 'playlist' || element.id === 'playerArea' || element.id === 'beatOptionRow' || element.id === 'beatOptionButtonGroup' || element.id === 'beatContainer'){
Em.$('#musicTab').removeClass('hidden');
Em.$('#lightsTab').addClass('hidden');
Em.$('.navigationItem').eq(0).removeClass('active');
Em.$('.navigationItem').eq(1).addClass('active');
} else {
Em.$('#lightsTab').removeClass('hidden');
Em.$('#musicTab').addClass('hidden');
Em.$('.navigationItem').eq(1).removeClass('active');
Em.$('.navigationItem').eq(0).addClass('active');
}
if(element.id === 'musicTab' || element.id === 'playlist' || element.id === 'playerArea'){
playerBottom.hide();
} else if(element.id === 'beatOptionRow' || element.id === 'beatOptionButtonGroup' || element.id === 'beatContainer'){
playerBottom.show();
} else if(element.id === 'lightsTab'){
Em.$('#musicTab').addClass('hidden');
Em.$('#lightsTab').removeClass('hidden');
} else if(element.id === 'dimmerWrapper'){
Em.$(document).click();
}
});
intro.onexit(()=>{
this.set('activeTab', 1);
Em.$('#musicTab').removeClass('hidden');
Em.$('#lightsTab').addClass('hidden');
Em.$('.navigationItem').eq(0).removeClass('active');
Em.$('.navigationItem').eq(1).addClass('active');
playerBottom.hide();
});
intro.start();
} }
}, },

View file

@ -15,12 +15,13 @@
</div> </div>
<div class="settingsItem"> <div class="settingsItem">
<span data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="settingsItemSettings">
{{paper-icon icon="settings" class=dimmerOnClass}}Settings <span class="caret"></span> {{paper-icon icon="settings" class=dimmerOnClass}}Settings <span class="caret"></span>
</span> </span>
<ul id="appSettings" class="dropdown-menu"> <ul id="appSettings" class="dropdown-menu">
<li {{action "clearBridge"}}><a href="#">Switch bridge</a></li> <li {{action "clearBridge"}}><a href="#">Switch bridge</a></li>
<li {{action "startIntro"}}><a href="#">Replay intro</a></li>
<li {{action "clearAllSettings"}}><a href="#">Clear application settings</a></li> <li {{action "clearAllSettings"}}><a href="#">Clear application settings</a></li>
</ul> </ul>
</div> </div>
@ -28,5 +29,6 @@
</div> </div>
{{lights-tab apiURL=apiURL lightsData=lightsData activeLights=activeLights trial=trial active=lightsTabSelected dimmerOn=dimmerOn}} {{lights-tab apiURL=apiURL lightsData=lightsData activeLights=activeLights trial=trial active=lightsTabSelected dimmerOn=dimmerOn}}
{{music-tab apiURL=apiURL lightsData=lightsData activeLights=activeLights active=musicTabSelected pauseLightUpdates=pauseLightUpdates dimmerOn=dimmerOn storage=storage}}
{{music-tab apiURL=apiURL lightsData=lightsData activeLights=activeLights active=musicTabSelected pauseLightUpdates=pauseLightUpdates dimmerOn=dimmerOn storage=storage firstVisit=firstVisit action="startIntro"}}
{{/if}} {{/if}}

View file

@ -14,7 +14,7 @@
{{/if}} {{/if}}
<footer id="footer"> <footer id="footer">
<p><span class="relative"><span class="dimmerWrapper" {{action "toggleDimmer"}}> <p><span class="relative"><span id="dimmerWrapper" {{action "toggleDimmer"}}>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="260.000000pt" height="260.000000pt" viewBox="0 0 260.000000 260.000000" preserveAspectRatio="xMidYMid meet"> <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="260.000000pt" height="260.000000pt" viewBox="0 0 260.000000 260.000000" preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,260.000000) scale(0.100000,-0.100000)" fill="#000000" stroke="none"> <g transform="translate(0.000000,260.000000) scale(0.100000,-0.100000)" fill="#000000" stroke="none">
<path class={{dimmerOnClass}} d="M1014 2555 c-171 -51 -297 -125 -414 -244 -140 -143 -195 -272 -195 <path class={{dimmerOnClass}} d="M1014 2555 c-171 -51 -297 -125 -414 -244 -140 -143 -195 -272 -195

View file

@ -3,6 +3,7 @@ import Em from 'ember';
export default Em.Component.extend({ export default Em.Component.extend({
classNames: ['col-sm-8', 'col-sm-offset-2', 'col-xs-12'], classNames: ['col-sm-8', 'col-sm-offset-2', 'col-xs-12'],
classNameBindings: ['active::hidden'], classNameBindings: ['active::hidden'],
elementId: 'lightsTab',
activeLights: [], activeLights: [],
lightsData: null, lightsData: null,

View file

@ -1,23 +1,23 @@
{{#paper-list class="lightsTab"}} {{#paper-list}}
{{#paper-item class="item"}} {{#paper-item class="item"}}
{{light-group lightsData=lightsData activeLights=activeLights action='clickLight' apiURL=apiURL classNames="horizontalLightGroup" dimmerOn=dimmerOn}} {{light-group lightsData=lightsData activeLights=activeLights action='clickLight' apiURL=apiURL classNames="horizontalLightGroup" dimmerOn=dimmerOn id="activeLights"}}
{{/paper-item}} {{/paper-item}}
{{#paper-item}} {{#paper-item}}
{{paper-icon icon="power-settings-new" class=dimmerOnClass}} {{paper-icon icon="power-settings-new" class=dimmerOnClass}}
<p data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip lightCtrlTooltip" data-title="Selected lights are turned on/off">Power</p> <p data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip lightCtrlTooltip" data-title="The selected lights to be on/off">Power</p>
{{#paper-switch checked=lightsOn disabled=trial skipProxy=trial}} {{lightsOnTxt}} {{/paper-switch}} {{#paper-switch checked=lightsOn disabled=trial skipProxy=trial}} {{lightsOnTxt}} {{/paper-switch}}
{{/paper-item}} {{/paper-item}}
{{#paper-item}} {{#paper-item}}
{{paper-icon icon="brightness-4" class=dimmerOnClass}} {{paper-icon icon="brightness-4" class=dimmerOnClass}}
<p data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip lightCtrlTooltip" data-title="Brightness level of the selected lights">Brightness</p> <p data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip lightCtrlTooltip" data-title="The brightness level of the selected lights">Brightness</p>
{{paper-slider flex=true min='1' max='254' value=lightsBrightness disabled=brightnessControlDisabled}} {{paper-slider flex=true min='1' max='254' value=lightsBrightness disabled=brightnessControlDisabled}}
{{/paper-item}} {{/paper-item}}
{{#paper-item elementId="colorRow"}} {{#paper-item elementId="colorRow"}}
{{paper-icon icon="color-lens" class=dimmerOnClass}} {{paper-icon icon="color-lens" class=dimmerOnClass}}
<p data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip lightCtrlTooltip" data-title="Color of the selected lights">Color</p> <p data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip lightCtrlTooltip" data-title="The color of the selected lights">Color</p>
{{/paper-item}} {{/paper-item}}
<div class="relative"> <div class="relative">

View file

@ -744,6 +744,12 @@ export default Em.Component.extend(helperMixin, visualizerMixin, {
event.preventDefault(); event.preventDefault();
}); });
Em.$(document).keypress((event) => {
if(event.which === 32 && event.target.type !== 'text'){
this.send('play');
}
});
// control the volume by scrolling up/down // control the volume by scrolling up/down
Em.$('#playerArea').on('mousewheel', function(event) { Em.$('#playerArea').on('mousewheel', function(event) {
if(self.get('playQueueNotEmpty')) { if(self.get('playQueueNotEmpty')) {
@ -762,12 +768,17 @@ export default Em.Component.extend(helperMixin, visualizerMixin, {
// demo tracks // demo tracks
if(this.get('firstVisit')){ if(this.get('firstVisit')){
this.send('handleNewSoundCloudURL', 'https://soundcloud.com/mrsuicidesheep/tracks'); this.send('handleNewSoundCloudURL', 'https://soundcloud.com/mrsuicidesheep/tracks');
this.get('storage').set('huegasm.firstVisit', false); this.get('storage').set('huegasm.firstVisit', false);
} }
if(!this.get('playerBottomDisplayed')) { if(!this.get('playerBottomDisplayed')) {
Em.$('#playerBottom').hide(); Em.$('#playerBottom').hide();
} }
if(this.get('firstVisit')){
}
this.sendAction();
} }
}); });

View file

@ -94,18 +94,18 @@ export default Em.Mixin.create({
SC_CLIENT_ID: 'aeec0034f58ecd85c2bd1deaecc41594', SC_CLIENT_ID: 'aeec0034f58ecd85c2bd1deaecc41594',
notFoundHtml: '<div class="alert alert-danger" role="alert">A microphone was not found.</div>', notFoundHtml: '<div class="alert alert-danger" role="alert">A microphone was not found.</div>',
scUserNotSupportedHtml: '<div class="alert alert-danger" role="alert">SoundCloud user URLs are not supported.</div>', scUserNotSupportedHtml: '<div class="alert alert-danger" role="alert">SoundCloud user URLs are not supported.</div>',
notStreamableHtml: function(fileNames){ notStreamableHtml(fileNames){
var html = '<div class="alert alert-danger" role="alert">The following file(s) could not be added because they are not allowed to be streamed:<br>' + fileNames.toString().replace(/,/g, '<br>') + '</div>'; var html = '<div class="alert alert-danger" role="alert">The following file(s) could not be added because they are not allowed to be streamed:<br>' + fileNames.toString().replace(/,/g, '<br>') + '</div>';
return html; return html;
}, },
urlNotFoundHtml: function(url){ urlNotFoundHtml(url){
return '<div class="alert alert-danger" role="alert">The URL ( ' + url + ' ) could not be resolved.</div>'; return '<div class="alert alert-danger" role="alert">The URL ( ' + url + ' ) could not be resolved.</div>';
}, },
failedToPlayFileHtml: function(fileName){ failedToPlayFileHtml(fileName){
return '<div class="alert alert-danger" role="alert">Failed to play file ( ' + fileName + ' ).</div>'; return '<div class="alert alert-danger" role="alert">Failed to play file ( ' + fileName + ' ).</div>';
}, },
failedToDecodeFileHtml: function(fileName){ failedToDecodeFileHtml(fileName){
return '<div class="alert alert-danger" role="alert">Failed to decode file ( ' + fileName + ' ).</div>'; return '<div class="alert alert-danger" role="alert">Failed to decode file ( ' + fileName + ' ).</div>';
}, },
@ -113,12 +113,12 @@ export default Em.Mixin.create({
var rtn = null, var rtn = null,
currentSong = this.get('playQueue')[this.get('playQueuePointer')]; currentSong = this.get('playQueue')[this.get('playQueuePointer')];
if(currentSong && currentSong.scUrl){ if(currentSong && currentSong.scUrl && !this.get('usingMicAudio')){
rtn = currentSong.scUrl; rtn = currentSong.scUrl;
} }
return rtn; return rtn;
}.property('playQueuePointer', 'playQueue.[]'), }.property('playQueuePointer', 'playQueue.[]', 'usingMicAudio'),
playQueueEmpty: Em.computed.empty('playQueue'), playQueueEmpty: Em.computed.empty('playQueue'),
playQueueNotEmpty: Em.computed.notEmpty('playQueue'), playQueueNotEmpty: Em.computed.notEmpty('playQueue'),
@ -305,6 +305,16 @@ export default Em.Mixin.create({
this.changeTooltipText(type, tooltipTxt); this.changeTooltipText(type, tooltipTxt);
}.observes('repeat').on('init'), }.observes('repeat').on('init'),
onUsingMicAudioChange: function(){
var tooltipTxt = 'Listen to audio through mic', type = 'usingMicAudio';
if (this.get(type)) {
tooltipTxt = 'Listen to audio files';
}
this.changeTooltipText(type, tooltipTxt);
}.observes('usingMicAudio').on('init'),
onShuffleChange: function () { onShuffleChange: function () {
var tooltipTxt = 'Shuffle', type = 'shuffle'; var tooltipTxt = 'Shuffle', type = 'shuffle';
@ -336,16 +346,16 @@ export default Em.Mixin.create({
}.observes('volumeMuted').on('init'), }.observes('volumeMuted').on('init'),
onPrevChange: function() { onPrevChange: function() {
if(this.get('playQueueMultiple')){ if(this.get('playQueueNotEmpty')){
var tooltipTxt = 'Previous', type = 'prev'; var tooltipTxt = 'Previous', type = 'prev';
if(this.get('timeElapsed') > 5) { if(this.get('timeElapsed') > 5 || this.get('playQueue').length === 1) {
tooltipTxt = 'Replay'; tooltipTxt = 'Replay';
} }
this.changeTooltipText(type, tooltipTxt); this.changeTooltipText(type, tooltipTxt);
} }
}.observes('timeElapsed', 'playQueueMultiple'), }.observes('timeElapsed', 'playQueueNotEmpty', 'playQueue.[]'),
onPlayingChange: function () { onPlayingChange: function () {
var tooltipTxt = 'Play', type = 'playing'; var tooltipTxt = 'Play', type = 'playing';

View file

@ -1,4 +1,4 @@
<div class="row"> <div class="row" id="step1">
<div id="playerArea" class="col-sm-8 col-xs-12 {{if (eq "None" currentVisName) "displayIcon"}}" {{action "playerAreaPlay"}}> <div id="playerArea" class="col-sm-8 col-xs-12 {{if (eq "None" currentVisName) "displayIcon"}}" {{action "playerAreaPlay"}}>
<canvas id="visualization"></canvas> <canvas id="visualization"></canvas>
<div id="playNotification" class="material-icons {{if fadeOutNotification "fadeOut"}} {{if playing "play-arrow" "pause"}}"></div> <div id="playNotification" class="material-icons {{if fadeOutNotification "fadeOut"}} {{if playing "play-arrow" "pause"}}"></div>
@ -7,7 +7,7 @@
{{#if usingLocalAudio}} {{#if usingLocalAudio}}
{{range-slider start=seekPosition min=0 max=100 id="seekSlider" slide="seekChanged"}} {{range-slider start=seekPosition min=0 max=100 id="seekSlider" slide="seekChanged"}}
{{#if playQueueMultiple}} {{#if playQueueNotEmpty}}
<span data-toggle="tooltip" data-placement="top" class="bootstrapTooltip" id="prevTooltip" <span data-toggle="tooltip" data-placement="top" class="bootstrapTooltip" id="prevTooltip"
data-title={{prevTooltipTxt}} {{action "previous"}}>{{paper-icon icon="skip-previous" class="playerControllIcon"}}</span><!-- data-title={{prevTooltipTxt}} {{action "previous"}}>{{paper-icon icon="skip-previous" class="playerControllIcon"}}</span><!--
-->{{/if}}<!-- -->{{/if}}<!--
@ -74,13 +74,13 @@
{{/if}} {{/if}}
{{#if usingMicSupported}} {{#if usingMicSupported}}
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip" data-title="Listen to audio through mic" {{action "useMicAudio"}}>{{paper-icon icon=micIcon class=usingMicAudioClass}}</span> <span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip" id="usingMicAudioTooltip" data-title={{usingMicAudioTooltipTxt}} {{action "useMicAudio"}}>{{paper-icon icon=micIcon class=usingMicAudioClass}}</span>
{{/if}} {{/if}}
</div> </div>
{{#if usingMicAudio}} {{#if usingMicAudio}}
<div id="playAreaMic"> <div id="playAreaMic" class="{{if dimmerOn "dimmerOn"}}">
{{paper-icon icon="mic"}} {{paper-icon icon="mic" class=dimmerOnClass}}
</div> </div>
{{else}} {{else}}
{{#if usingLocalAudio}} {{#if usingLocalAudio}}
@ -142,7 +142,7 @@
</span> </span>
{{/if}} {{/if}}
<div class="row"> <div class="row" id="beatOptionRow">
<div class="beatOption col-xs-3"> <div class="beatOption col-xs-3">
<span data-toggle="tooltip" data-placement="bottom auto" data-title="The minimum sound intensity for the beat to register" class="optionDescription bootstrapTooltip">Beat Threshold</span> <span data-toggle="tooltip" data-placement="bottom auto" data-title="The minimum sound intensity for the beat to register" class="optionDescription bootstrapTooltip">Beat Threshold</span>
{{range-slider start=threshold orientation="vertical" step=beatOptions.threshold.step range=beatOptions.threshold.range slide="thresholdChanged" pips=beatOptions.threshold.pips}} {{range-slider start=threshold orientation="vertical" step=beatOptions.threshold.step range=beatOptions.threshold.range slide="thresholdChanged" pips=beatOptions.threshold.pips}}
@ -191,32 +191,33 @@
</div> </div>
<div id="beatContainer" class="col-sm-5 col-xs-12"> <div id="beatContainer" class="col-sm-5 col-xs-12">
{{#if speakerViewed}} {{#if speakerViewed}}
<div class="bezel"> <div class="bezel">
<div class="rivet1"></div> <div class="rivet1"></div>
<div class="rivet2"></div> <div class="rivet2"></div>
<div class="rivet3"></div> <div class="rivet3"></div>
<div class="rivet4"></div> <div class="rivet4"></div>
<div class="rivet5"></div> <div class="rivet5"></div>
<div class="rivet6"></div> <div class="rivet6"></div>
<div class="rivet7"></div> <div class="rivet7"></div>
<div class="rivet8"></div> <div class="rivet8"></div>
<div id="beatSpeakerCenterOuter"> <div id="beatSpeakerCenterOuter">
<div id="beatSpeakerCenterInner" class="cursorPointer" {{action "clickSpeaker"}}> <div id="beatSpeakerCenterInner" class="cursorPointer" {{action "clickSpeaker"}}>
</div> </div>
</div> </div>
</div> </div>
{{else}} {{else}}
<div id="beatHistory"> <div id="beatHistory">
{{#each beatHistory as |item|}} {{#each beatHistory as |item|}}
<p>{{{item}}}</p> <p>{{{item}}}</p>
{{/each}} {{/each}}
</div> </div>
{{#paper-switch checked=debugFiltered class="debugFilteredSwitch"}} {{debugFilteredText}} {{/paper-switch}}
{{/if}}
{{#paper-switch checked=speakerViewed class="speakerSwitch"}} {{speakerLabel}} {{/paper-switch}} {{#paper-switch checked=debugFiltered class="debugFilteredSwitch"}} {{debugFilteredText}} {{/paper-switch}}
{{/if}}
{{#paper-switch checked=speakerViewed class="speakerSwitch"}} {{speakerLabel}} {{/paper-switch}}
</div> </div>
</div> </div>

View file

@ -178,7 +178,7 @@ md-list-item .md-no-style {
padding: 0; padding: 0;
} }
.lightsTab { #lightsTab {
min-height: 400px; min-height: 400px;
} }
@ -913,13 +913,14 @@ body.dimmerOn {
.loop.dimmerOn, .loop.dimmerOn,
.group.dimmerOn, .group.dimmerOn,
.settings.dimmerOn, .settings.dimmerOn,
.mic.dimmerOn,
.library-music.dimmerOn { .library-music.dimmerOn {
color: inherit !important; color: inherit !important;
text-shadow: $glowingText; text-shadow: $glowingText;
opacity: 0.9 !important; opacity: 0.9 !important;
} }
.dimmerWrapper { #dimmerWrapper {
position: absolute; position: absolute;
left: -50px; left: -50px;
bottom: -16px; bottom: -16px;
@ -1041,3 +1042,18 @@ div.ember-modal-dialog {
opacity: 1; opacity: 1;
background: rgba(0, 0, 0, 0.7); background: rgba(0, 0, 0, 0.7);
} }
.introjs-helperNumberLayer {
line-height: 17px;
padding: 0;
width: 23px;
height: 23px;
}
.introjs-tooltip {
color: black;
}
#settings.introjs-fixParent{
position: inherit !important;
}

View file

@ -24,7 +24,6 @@ $vibrateblurouter: 2px;
@keyframes vibrateInner { @keyframes vibrateInner {
50% { 50% {
-webkit-filter: blur($vibrateblurinner); -webkit-filter: blur($vibrateblurinner);
filter: blur($vibrateblurinner);
transform: scale(1.05); transform: scale(1.05);
} }
} }
@ -33,37 +32,30 @@ $vibrateblurouter: 2px;
0% { 0% {
-webkit-filter: blur($vibrateblurouter); -webkit-filter: blur($vibrateblurouter);
filter: blur($vibrateblurouter); filter: blur($vibrateblurouter);
border: 15px solid #333;
} }
30% { 30% {
-webkit-filter: blur(0); -webkit-filter: blur(0);
filter: blur(0); filter: blur(0);
border: 17px solid #333;
} }
50% { 50% {
-webkit-filter: blur($vibrateblurouter); -webkit-filter: blur($vibrateblurouter);
filter: blur($vibrateblurouter); filter: blur($vibrateblurouter);
border: 15px solid #333;
} }
65% { 65% {
-webkit-filter: blur(0); -webkit-filter: blur(0);
filter: blur(0); filter: blur(0);
border: 17px solid #333;
} }
70% { 70% {
-webkit-filter: blur($vibrateblurouter); -webkit-filter: blur($vibrateblurouter);
filter: blur($vibrateblurouter); filter: blur($vibrateblurouter);
border: 15px solid #333;
} }
80% { 80% {
-webkit-filter: blur($vibrateblurouter); -webkit-filter: blur($vibrateblurouter);
filter: blur($vibrateblurouter); filter: blur($vibrateblurouter);
border: 17px solid #333;
} }
100% { 100% {
-webkit-filter: blur($vibrateblurouter); -webkit-filter: blur($vibrateblurouter);
filter: blur($vibrateblurouter); filter: blur($vibrateblurouter);
border: 15px solid #333;
} }
} }

View file

@ -21,7 +21,7 @@ module.exports = function(environment) {
contentSecurityPolicy: { contentSecurityPolicy: {
'default-src': "'none'", 'default-src': "'none'",
'script-src': "'self' connect.soundcloud.com", 'script-src': "'self' 'unsafe-inline' connect.soundcloud.com",
'font-src': "'self' fonts.gstatic.com", 'font-src': "'self' fonts.gstatic.com",
'connect-src': "'self' *", 'connect-src': "'self' *",
'img-src': "'self' *.sndcdn.com data:", 'img-src': "'self' *.sndcdn.com data:",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

@ -2,10 +2,10 @@
<browserconfig> <browserconfig>
<msapplication> <msapplication>
<tile> <tile>
<square70x70logo src="assets/images/favicons/mstile-70x70.png"/> <square70x70logo src="/mstile-70x70.png"/>
<square150x150logo src="assets/images/favicons/mstile-150x150.png"/> <square150x150logo src="/mstile-150x150.png"/>
<square310x310logo src="assets/images/favicons/mstile-310x310.png"/> <square310x310logo src="/mstile-310x310.png"/>
<wide310x150logo src="assets/images/favicons/mstile-310x150.png"/> <wide310x150logo src="/mstile-310x150.png"/>
<TileColor>#da532c</TileColor> <TileColor>#da532c</TileColor>
</tile> </tile>
</msapplication> </msapplication>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 750 B

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View file

@ -2,37 +2,37 @@
"name": "Huegasm", "name": "Huegasm",
"icons": [ "icons": [
{ {
"src": "assets\/images\/favicons\/android-chrome-36x36.png", "src": "\/android-chrome-36x36.png",
"sizes": "36x36", "sizes": "36x36",
"type": "image\/png", "type": "image\/png",
"density": "0.75" "density": "0.75"
}, },
{ {
"src": "assets\/images\/favicons\/android-chrome-48x48.png", "src": "\/android-chrome-48x48.png",
"sizes": "48x48", "sizes": "48x48",
"type": "image\/png", "type": "image\/png",
"density": "1.0" "density": "1.0"
}, },
{ {
"src": "assets\/images\/favicons\/android-chrome-72x72.png", "src": "\/android-chrome-72x72.png",
"sizes": "72x72", "sizes": "72x72",
"type": "image\/png", "type": "image\/png",
"density": "1.5" "density": "1.5"
}, },
{ {
"src": "assets\/images\/favicons\/android-chrome-96x96.png", "src": "\/android-chrome-96x96.png",
"sizes": "96x96", "sizes": "96x96",
"type": "image\/png", "type": "image\/png",
"density": "2.0" "density": "2.0"
}, },
{ {
"src": "assets\/images\/favicons\/android-chrome-144x144.png", "src": "\/android-chrome-144x144.png",
"sizes": "144x144", "sizes": "144x144",
"type": "image\/png", "type": "image\/png",
"density": "3.0" "density": "3.0"
}, },
{ {
"src": "assets\/images\/favicons\/android-chrome-192x192.png", "src": "\/android-chrome-192x192.png",
"sizes": "192x192", "sizes": "192x192",
"type": "image\/png", "type": "image\/png",
"density": "4.0" "density": "4.0"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -9,37 +9,402 @@ Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata> </metadata>
<g transform="translate(0.000000,260.000000) scale(0.100000,-0.100000)" <g transform="translate(0.000000,260.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none"> fill="#000000" stroke="none">
<path d="M1200 2559 c-305 -32 -587 -215 -701 -454 -66 -138 -74 -290 -25 <path d="M1109 2580 c-327 -68 -578 -259 -674 -513 -32 -85 -53 -277 -31 -277
-454 27 -89 35 -105 140 -276 81 -131 185 -336 214 -420 11 -33 25 -103 31 5 0 7 -3 3 -6 -3 -3 -2 -17 3 -30 7 -16 6 -24 -1 -24 -7 0 -8 -5 -2 -12 17
-155 16 -129 27 -168 62 -213 20 -24 28 -44 24 -56 -3 -10 -2 -36 3 -58 5 -23 -24 34 -88 27 -99 -4 -8 -3 -9 4 -5 11 6 16 -6 13 -26 0 -5 4 -8 10 -8 6 0 9
5 -47 -1 -60 -6 -14 -6 -36 0 -60 6 -24 6 -48 0 -64 -15 -41 17 -114 58 -133 -7 5 -15 -3 -8 -2 -14 2 -14 19 3 25 -2 12 -11 -13 -8 -12 -10 4 -10 11 0 17
18 -9 40 -16 48 -16 9 0 37 -16 63 -36 85 -65 127 -79 239 -79 112 0 154 14 -3 13 -6 -3 -3 3 -15 14 -27 10 -11 19 -27 19 -34 0 -7 4 -13 8 -13 13 0 40
239 79 26 20 54 36 63 36 28 0 80 31 90 53 6 12 9 95 8 187 l-2 165 32 38 c37 -54 34 -69 -3 -8 0 -11 6 -7 6 4 16 -3 22 -15 10 -17 9 -20 -2 -14 -7 5 -1 -3
43 50 84 66 207 6 47 22 119 35 160 34 102 139 313 220 440 121 191 154 282 13 -17 15 -14 30 -36 34 -49 4 -13 11 -26 14 -29 15 -12 53 -99 47 -109 -5 -7
154 433 0 150 -53 288 -157 409 -78 90 -157 149 -285 214 -138 69 -260 106 -1 -8 10 -4 11 4 15 2 11 -4 -4 -6 0 -16 8 -23 12 -10 13 -16 3 -28 -11 -13
-355 106 -40 0 -75 4 -79 9 -6 11 -65 10 -184 -2z m764 -220 c63 -58 55 -77 -11 -14 1 -7 11 6 13 4 8 -9 -4 -9 -3 -15 2 -12 11 7 33 -52 25 -65 -3 -5 1
-10 -20 -25 22 -80 60 -120 83 -40 24 -76 49 -79 56 -9 24 157 -71 209 -119z -12 9 -15 8 -3 17 -14 20 -25 3 -11 1 -16 -5 -13 -6 4 -2 -5 7 -20 10 -14 14
m-419 66 c243 -51 428 -182 522 -371 43 -87 45 -95 45 -177 0 -92 -18 -171 -26 11 -26 -4 0 -2 -8 3 -19 9 -16 20 -93 25 -182 3 -34 27 -91 45 -105 8 -6
-58 -249 -13 -26 -24 -50 -23 -53 0 -4 -7 -17 -16 -31 -9 -14 -14 -28 -12 -31 11 -18 8 -27 -7 -19 8 -32 19 -16 5 8 3 9 -6 4 -9 -5 -11 -4 -6 4 10 15 27 4
6 -5 -7 -30 -88 -169 -57 -97 -101 -187 -130 -271 -16 -44 -21 -51 -34 -40 24 -16 -2 -9 3 -18 10 -20 6 -3 12 0 12 7 0 6 -5 8 -12 4 -7 -4 -8 -3 -4 4 9
-12 10 -14 9 -8 -5 4 -10 2 -18 -4 -18 -6 0 -9 -7 -5 -15 3 -8 0 -15 -5 -15 14 36 4 36 -13 0 -8 -9 -17 -20 -20 -11 -4 -18 -10 -15 -15 3 -5 1 -11 -4 -15
-6 0 -9 -9 -6 -20 3 -11 1 -20 -5 -20 -6 0 -8 -9 -5 -20 3 -11 2 -20 -2 -20 -15 -9 -4 -45 20 -66 12 -10 17 -19 12 -19 -18 0 -43 -62 -33 -81 5 -9 7 -19
-5 0 -11 -37 -15 -82 -10 -126 -13 -128 -150 -128 l-114 0 -1 137 c-1 76 -4 5 -23 -3 -3 -2 -4 1 -2 3 3 12 0 18 -7 10 -8 8 -16 -8 -34 -21 -25 -30 -83
179 -7 230 -4 50 -4 102 0 116 4 17 29 38 83 70 133 78 257 197 303 293 24 49 -11 -80 5 1 9 -4 7 -11 -1 -8 2 -11 8 -7 5 3 13 -1 16 -9 3 -9 10 -16 16 -16
26 116 3 154 -18 31 -85 74 -98 62 -5 -4 -5 -2 -2 4 8 14 -23 24 -79 24 -67 0 5 0 6 6 2 13 -5 9 -4 9 6 0 7 -6 20 -9 29 -6 13 4 14 3 1 -5 -8 -6 -17 -9 -21
-138 -43 -194 -117 -27 -36 -47 -69 -44 -74 3 -5 0 -9 -6 -9 -6 0 -8 -4 -5 -6 -4 2 -11 -1 -15 -7 -4 -7 -3 -9 4 -5 6 3 13 -2 15 -11 4 -16 5 -16 6 1 1
-10 3 -5 1 -10 -6 -10 -7 0 -10 -3 -6 -6 3 -3 -2 -14 -11 -25 -16 -18 -17 -17 15 3 16 16 6 13 -10 18 -11 28 -1 9 10 8 11 -8 5 -21 -8 -21 -6 9 16 11 8 17
-45 29 -42 68 -74 99 -143 138 -69 39 -113 43 -164 15 -52 -27 -80 -83 -80 10 13 3 -4 -7 5 -20 22 -33 21 -14 28 -26 24 -38 -6 -15 -5 -16 12 -2 17 13
-158 0 -140 74 -242 237 -326 50 -26 94 -55 98 -64 3 -10 9 -120 12 -246 l6 18 13 13 -1 -3 -9 -2 -22 3 -30 5 -8 9 -9 9 -3 0 17 28 25 36 12 4 -6 3 -8 -4
-227 -126 0 -125 0 -10 32 c-6 18 -13 64 -17 102 -13 147 -105 370 -255 616 -4 -6 3 -13 2 -16 -2 -3 -5 80 -10 184 -10 126 -1 190 2 190 9 0 5 -6 7 -13 3
-45 74 -95 161 -111 193 -156 328 88 699 521 791 87 19 297 19 385 1z m280 -6 -4 -2 4 11 18 12 13 19 28 15 33 -5 4 -3 5 4 2 6 -4 19 0 28 9 9 9 19 13
-24 c65 -37 152 -115 172 -155 12 -25 2 -18 -53 35 -38 36 -95 83 -126 104 23 10 3 -4 1 -11 -7 -15 -10 -6 -9 -10 5 -15 10 -4 21 -1 25 5 4 6 12 8 19 4
-32 21 -58 39 -58 41 0 9 18 2 65 -25z m-58 -763 c-2 -13 -4 -3 -4 22 0 25 2 9 -5 11 -4 6 3 -8 14 20 12 44 -2 8 -5 12 -5 7 -1 -9 11 21 45 36 41 7 -2 9
35 4 23 2 -13 2 -33 0 -45z m-104 -4 c30 -11 4 -59 -73 -136 -43 -43 -82 -78 -1 5 1 -5 3 -8 9 -8 14 0 6 4 8 9 4 5 -3 13 0 17 6 4 7 3 10 -2 6 -5 -3 -14 6
-88 -78 -29 0 44 146 95 191 35 30 42 33 66 23z m-499 -97 c14 -18 37 -58 51 -21 19 -6 13 -7 22 -2 18 13 -8 11 10 -3 25 -10 11 -10 13 0 7 6 -4 12 -2 12
-90 21 -45 24 -60 15 -77 -13 -25 -12 -25 -61 7 -68 45 -112 146 -77 181 21 4 0 6 4 9 8 6 5 -3 9 1 9 9 0 8 -4 12 -9 9 -4 -3 -8 2 -8 11 0 9 -5 13 -10 10
21 46 13 72 -21z m775 -258 c-92 -185 -134 -296 -148 -389 -6 -41 -15 -100 -8 -5 -7 -11 1 -21 7 -8 7 -14 1 -14 -14 0 -23 28 -12 35 5 3 7 12 4 19 -3 8
-20 -130 -9 -49 -9 -46 -4 30 7 117 27 215 58 291 56 135 172 355 182 346 2 0 17 5 21 6 3 9 11 5 16 -3 5 0 17 7 25 10 12 9 13 -6 8 -13 -5 -16 -4 -11 4
-3 -28 -69 -68 -148z"/> 4 7 2 12 -6 12 -8 0 -9 3 -3 8 12 9 18 30 16 60 0 13 4 33 10 44 7 13 7 18 1
14 -6 -3 -13 -2 -17 4 -4 6 -12 7 -18 4 -7 -4 -9 -4 -5 1 4 4 3 14 -3 22 -7 8
-8 13 -1 13 5 0 12 -7 16 -15 3 -8 10 -15 16 -15 7 0 7 6 0 21 -7 11 -9 23 -7
26 3 2 8 -5 12 -16 7 -24 25 -28 25 -7 0 8 4 17 9 21 6 3 8 -4 6 -15 -2 -11 0
-18 6 -15 5 4 6 11 3 17 -4 6 2 8 17 4 13 -3 18 -3 11 0 -10 5 -10 9 -1 20 6
8 8 14 3 14 -4 0 5 13 21 30 16 16 23 30 17 30 -7 0 -12 -6 -12 -12 0 -9 -4
-8 -10 2 -9 13 -10 13 -11 0 -1 -8 -1 -19 0 -23 1 -5 -4 -5 -10 -1 -7 4 -9 3
-6 -3 3 -5 0 -10 -8 -10 -11 0 -11 4 1 22 8 12 11 25 7 30 -5 4 -3 5 4 2 6 -4
19 0 28 10 16 16 16 18 -4 34 -17 14 -18 18 -5 23 8 3 12 2 9 -4 -3 -6 -2 -10
3 -10 21 0 20 30 -1 45 -14 10 -17 15 -7 15 9 0 21 9 28 21 8 12 9 18 3 14 -6
-3 -11 -1 -11 5 0 6 -4 8 -10 5 -6 -3 -7 1 -4 9 3 9 10 16 16 16 5 0 6 -4 3
-10 -3 -6 1 -7 10 -4 14 6 14 8 -2 19 -10 7 -21 11 -25 9 -5 -3 -8 -1 -8 4 0
5 11 14 25 20 16 7 23 17 19 26 -4 11 0 14 15 11 15 -3 19 0 14 8 -4 7 -8 17
-8 22 0 6 -6 10 -12 10 -7 0 -13 3 -13 8 0 4 0 12 0 18 0 6 7 3 16 -5 8 -9 21
-16 27 -16 9 0 9 2 1 8 -12 8 -15 42 -3 42 4 0 10 -6 12 -12 3 -7 3 4 1 25 -2
24 0 36 6 32 6 -4 7 1 3 11 -6 16 -7 15 -20 -2 -7 -10 -13 -14 -13 -10 0 4 9
19 19 32 16 20 20 21 25 8 4 -10 2 -13 -6 -8 -7 4 -8 3 -4 -4 12 -20 28 -13
21 8 -4 13 -2 20 5 18 7 -2 14 8 17 22 2 14 6 32 7 40 2 8 -1 23 -6 32 -6 14
-5 16 7 12 8 -3 13 -9 11 -13 -2 -3 0 -15 5 -26 8 -21 7 -22 13 26 0 7 10 16
21 21 18 8 18 8 -2 4 -24 -4 -32 17 -11 30 7 5 8 3 3 -7 -7 -11 -6 -12 7 -2 8
7 17 11 20 8 2 -3 5 2 5 10 0 12 -3 12 -16 2 -12 -10 -13 -9 -7 2 5 8 3 16 -5
22 -12 7 -12 10 0 21 9 8 11 9 7 1 -3 -6 -2 -14 3 -17 5 -3 12 1 15 9 3 9 -1
18 -9 21 -8 4 -15 10 -15 16 0 5 5 6 10 3 6 -3 10 0 10 7 0 10 3 9 9 -2 6 -8
8 -17 6 -20 -2 -4 2 -7 9 -7 8 0 12 6 9 14 -4 9 0 11 13 7 15 -5 16 -4 4 4 -8
6 -18 8 -23 5 -5 -3 -4 4 2 16 10 18 26 25 52 23 3 0 11 9 19 21 12 20 12 21
-2 9 -24 -19 -55 -23 -55 -6 0 8 4 14 9 14 4 0 8 -5 8 -12 0 -6 8 -3 20 7 15
13 17 22 10 36 -13 22 -13 39 -1 20 11 -17 41 -24 41 -9 0 6 -8 7 -17 4 -10
-4 -14 -4 -10 0 4 4 3 12 -3 18 -5 7 -5 17 2 26 8 12 9 12 4 -2 -3 -10 -1 -20
4 -23 6 -4 10 -1 10 4 0 6 5 11 11 11 5 0 7 -6 3 -12 -4 -8 -3 -10 2 -5 5 5
10 13 10 18 1 5 2 11 3 14 0 3 11 1 24 -5 20 -10 20 -9 -3 9 -14 11 -28 21
-32 21 -5 0 -8 5 -8 11 0 9 4 9 13 0 11 -8 18 -6 31 8 10 11 18 25 20 33 3 23
17 38 29 32 8 -5 8 -3 0 7 -7 7 -13 21 -13 31 0 10 -5 18 -11 18 -5 0 -8 4 -5
9 4 5 0 11 -6 14 -7 3 -3 4 9 4 12 -1 19 -5 17 -9 -3 -4 0 -16 6 -25 9 -15 10
-14 4 6 -4 17 -3 21 6 16 8 -5 11 -4 6 3 -3 5 -3 12 1 15 5 2 2 2 -4 1 -7 -2
-13 4 -13 12 0 8 4 13 8 10 4 -3 8 6 8 20 -1 13 4 23 9 21 6 -1 9 -6 7 -10 -1
-5 2 -5 8 -2 8 5 6 13 -4 24 -9 10 -13 21 -9 24 3 4 0 7 -8 7 -11 0 -11 2 1
10 8 5 10 10 4 10 -6 0 -11 7 -11 15 0 10 6 14 16 10 9 -3 5 4 -9 16 -14 11
-20 18 -13 15 6 -4 15 -1 19 5 4 8 3 9 -4 5 -7 -4 -12 -2 -12 5 0 8 -4 8 -15
-1 -9 -7 -15 -8 -15 -2 0 11 28 24 39 17 4 -2 8 2 8 10 0 10 -6 11 -23 5 -17
-7 -22 -5 -20 5 1 8 6 18 11 22 4 4 5 2 1 -4 -5 -9 -2 -11 10 -6 16 6 16 8 -4
16 -27 12 -36 36 -20 55 11 13 11 14 -1 7 -11 -6 -13 -4 -8 8 4 12 1 17 -11
17 -13 0 -14 2 -3 9 11 7 11 9 0 13 -12 4 -12 8 -1 20 9 12 10 18 2 23 -6 4
-14 4 -17 1 -4 -3 -1 -6 6 -6 7 0 9 -5 6 -10 -9 -14 -21 -5 -28 20 -3 11 -1
18 4 14 5 -3 9 0 9 5 0 6 -7 11 -15 11 -8 0 -15 5 -15 11 0 5 5 7 12 3 7 -4 8
-3 4 5 -4 6 -11 9 -16 6 -4 -3 -14 3 -21 12 -10 12 -10 14 -1 9 6 -4 12 -2 12
3 0 6 -7 11 -15 11 -13 0 -16 6 -14 26 0 4 -10 12 -22 18 -12 6 -27 20 -33 31
-6 11 -23 31 -38 44 -15 13 -25 28 -21 34 3 5 2 7 -4 4 -14 -9 -55 22 -47 35
4 6 3 8 -2 5 -12 -7 -96 48 -86 57 3 4 -1 4 -10 1 -8 -3 -22 1 -31 9 -9 9 -20
16 -26 16 -6 0 -19 4 -29 10 -38 21 -110 48 -162 61 -30 7 -57 16 -60 19 -7 7
-56 11 -230 15 -121 2 -174 -1 -241 -15z m242 -90 c4 0 11 4 14 10 4 6 13 5
25 -2 10 -7 17 -15 14 -19 -5 -8 10 -6 44 5 12 4 20 11 18 15 -3 4 4 7 14 7
10 0 16 -4 14 -8 -3 -4 0 -8 6 -8 6 0 8 -5 4 -11 -4 -8 -9 -7 -14 2 -7 10 -11
10 -24 0 -9 -8 -16 -19 -16 -25 0 -6 7 -3 14 7 8 10 17 14 20 9 3 -5 19 -7 37
-4 l32 5 -24 19 c-22 18 -20 18 12 -1 39 -23 54 -26 45 -12 -9 13 22 7 36 -7
9 -9 9 -12 0 -12 -7 0 -12 5 -12 11 0 8 -5 8 -15 -1 -8 -7 -15 -18 -14 -24 0
-7 2 -6 6 2 2 6 9 12 14 12 6 0 8 -4 4 -9 -3 -5 0 -13 6 -17 8 -4 9 -3 5 4 -5
8 1 12 14 12 12 0 19 4 16 8 -3 5 1 9 9 9 8 0 15 -4 15 -9 0 -5 4 -6 10 -3 6
3 7 -1 3 -10 -4 -13 -8 -14 -14 -4 -4 8 -11 10 -16 6 -4 -5 -1 -12 6 -16 15
-10 53 -2 46 8 -2 4 2 8 10 8 8 0 12 -4 9 -9 -7 -10 57 -38 70 -31 5 4 6 1 2
-5 -4 -8 -15 -8 -31 -2 -18 7 -23 6 -19 -3 2 -7 17 -13 32 -13 19 1 27 -4 26
-15 -1 -9 5 -16 12 -16 9 0 10 5 3 18 -14 27 -10 36 7 14 8 -11 18 -19 22 -17
3 2 8 -2 10 -10 2 -9 0 -8 -7 2 -6 8 -11 10 -11 4 0 -19 13 -24 28 -11 13 10
14 9 7 -2 -6 -11 -4 -13 8 -8 18 7 29 -15 20 -40 -5 -17 -4 -16 8 0 14 17 16
17 44 -7 17 -14 34 -26 38 -26 5 0 5 -5 2 -11 -5 -6 -12 -4 -21 8 -7 10 -14
14 -14 9 0 -4 -9 2 -21 15 l-20 24 17 -27 c9 -15 20 -25 25 -22 8 5 13 -9 10
-29 0 -4 5 -6 11 -5 7 2 12 -3 10 -11 -3 -12 0 -12 13 -1 8 7 17 11 18 9 2 -2
14 -20 27 -39 13 -19 29 -38 35 -42 5 -4 6 -8 1 -8 -6 0 -1 -7 10 -16 10 -8
13 -12 5 -8 -9 4 -12 2 -9 -7 3 -8 12 -13 19 -11 8 2 11 0 7 -4 -4 -4 -3 -13
3 -20 6 -8 9 -21 5 -29 -3 -9 -2 -14 3 -11 11 7 24 -41 15 -56 -5 -7 -2 -8 6
-3 10 6 12 1 8 -19 -3 -14 -1 -29 4 -32 5 -3 3 -13 -4 -22 -9 -11 -9 -14 -1
-8 10 5 12 -8 8 -56 -4 -62 -6 -73 -21 -133 -13 -54 -46 -118 -109 -215 -191
-295 -294 -535 -309 -720 -8 -94 -15 -123 -34 -143 -18 -17 -24 -17 -279 -15
-25 0 -30 12 -11 24 7 5 8 3 3 -6 -5 -8 -4 -11 3 -6 15 9 3 38 -14 32 -8 -3
-14 -2 -14 3 0 5 9 11 20 14 11 3 18 1 15 -3 -3 -5 -2 -11 3 -14 4 -2 9 4 9
15 2 16 -3 19 -20 14 -20 -5 -19 -4 3 9 14 9 19 15 11 16 -11 0 -11 3 0 17 8
10 9 14 2 10 -8 -5 -11 0 -10 13 1 11 5 20 9 20 3 0 6 9 5 20 -1 11 -5 20 -10
20 -5 0 -5 6 0 13 13 15 13 47 0 47 -5 0 -3 8 4 17 8 9 9 14 3 10 -7 -4 -15 0
-18 9 -5 12 -2 15 9 10 9 -3 13 -2 10 4 -9 14 -32 12 -38 -2 -4 -10 -6 -10 -6
0 -1 7 6 15 14 18 8 4 13 10 10 14 -3 5 -1 12 5 15 8 5 7 11 -1 21 -6 7 -15
12 -19 9 -4 -3 -6 9 -5 25 1 17 -1 33 -6 36 -5 3 -3 11 4 19 9 10 16 10 27 1
13 -9 13 -9 2 6 -8 9 -20 14 -28 11 -17 -6 -18 6 -3 27 9 13 10 12 5 -3 -4
-11 -2 -16 5 -12 5 4 18 1 27 -7 15 -11 15 -11 5 3 -7 9 -9 20 -5 24 4 5 2 6
-3 2 -6 -3 -17 3 -24 15 -7 11 -8 17 -2 13 6 -3 11 -2 11 4 0 5 -3 11 -7 14
-5 2 -2 2 5 1 6 -2 12 2 12 8 0 6 3 9 6 6 3 -4 1 -16 -6 -27 -6 -12 -7 -21 -3
-20 21 4 33 -2 27 -13 -4 -7 -3 -8 4 -4 17 10 15 26 -3 26 -18 0 -20 19 -2 21
6 1 15 1 18 1 3 -1 6 6 6 13 0 10 -4 12 -12 5 -7 -6 -15 -2 -25 13 -12 20 -11
21 2 9 17 -14 51 -6 41 11 -3 5 -1 7 5 3 6 -3 18 1 26 10 9 8 16 12 16 7 0
-13 -17 -35 -25 -34 -5 1 -10 -6 -11 -15 -2 -13 2 -12 21 6 15 14 28 19 37 14
10 -6 10 -4 -1 9 -7 9 -10 17 -6 17 4 0 2 6 -4 13 -8 10 -7 14 3 14 8 0 13 -8
11 -18 -2 -10 2 -19 9 -22 13 -5 15 31 3 50 -5 8 -1 11 13 8 11 -2 24 3 28 12
8 13 10 13 15 -1 5 -11 3 -15 -5 -10 -7 5 -8 3 -3 -6 5 -9 4 -11 -3 -6 -8 5
-10 1 -6 -9 6 -14 8 -14 19 3 8 10 13 26 12 36 -1 11 4 21 12 24 10 3 11 -2 6
-18 -5 -15 -4 -20 4 -16 6 4 11 13 11 19 0 16 38 39 51 32 5 -4 9 -3 8 2 -4
20 2 27 12 13 9 -13 10 -12 5 3 -3 11 0 20 9 23 8 4 12 10 9 15 -3 5 0 9 6 9
6 0 8 5 5 10 -4 6 -1 18 7 27 11 15 11 16 -4 10 -10 -3 -20 -2 -23 4 -4 5 -3
9 2 8 22 -4 44 2 38 10 -5 9 32 27 47 23 4 -1 5 5 2 13 -5 11 -1 14 12 10 12
-4 11 -1 -3 6 -23 12 -30 33 -14 43 5 3 7 19 5 35 -2 20 2 33 12 39 15 8 15
10 0 15 -10 4 -15 3 -11 -3 3 -6 1 -10 -4 -10 -10 0 -16 22 -12 43 1 5 -3 6
-8 3 -5 -4 -14 0 -18 9 -15 27 -85 55 -136 55 -103 0 -202 -88 -268 -238 -13
-29 -26 -52 -31 -52 -4 0 -4 -7 -1 -17 4 -10 2 -14 -4 -10 -6 4 -14 2 -16 -3
-3 -6 -4 -5 -3 2 1 7 -4 19 -11 27 -8 7 -12 20 -9 27 3 8 0 14 -6 14 -6 0 -8
3 -5 7 4 3 -2 13 -13 20 -11 8 -18 19 -15 24 4 5 0 9 -7 9 -9 0 -9 3 2 10 13
9 13 10 0 10 -21 0 -52 38 -44 52 4 7 3 8 -5 4 -13 -8 -44 18 -33 29 4 4 2 6
-3 5 -6 -1 -12 -1 -15 0 -16 6 -50 13 -86 17 -86 10 -150 -53 -162 -161 -5
-36 -5 -66 -1 -66 4 0 12 -13 18 -30 5 -16 7 -30 4 -30 -4 0 2 -7 13 -15 19
-15 19 -15 -1 -9 -12 3 -10 -1 7 -10 17 -10 25 -22 22 -31 -4 -10 -2 -13 8
-10 8 3 25 -6 38 -20 21 -22 22 -28 10 -35 -8 -5 -10 -10 -4 -10 5 0 16 6 23
13 12 10 13 9 7 -7 -5 -15 -4 -17 7 -7 11 9 17 8 27 -4 7 -8 15 -13 19 -10 4
2 6 -11 5 -30 -3 -33 -2 -33 16 -17 24 20 25 23 5 16 -8 -4 -15 -2 -15 4 0 9
20 9 40 2 3 -1 8 -2 11 -2 3 1 6 -6 6 -13 0 -11 -4 -12 -14 -4 -8 7 -13 8 -13
1 0 -16 26 -22 40 -9 10 9 11 9 6 0 -4 -7 -2 -13 4 -13 6 0 8 -5 4 -12 -4 -7
-3 -8 5 -4 6 4 14 0 17 -8 3 -9 10 -16 16 -16 5 0 -1 15 -13 33 l-23 32 25
-23 c14 -12 28 -20 30 -18 5 6 6 4 13 -129 4 -55 8 -112 10 -127 2 -16 -1 -28
-6 -28 -5 0 -6 -6 -1 -12 11 -18 11 -31 0 -45 -6 -8 -6 -13 0 -13 5 0 9 -9 9
-20 0 -11 -4 -20 -9 -20 -4 0 -5 -5 -1 -12 12 -19 12 -88 0 -88 -8 0 -8 -3 -1
-8 11 -7 14 -46 4 -56 -3 -3 -62 -6 -130 -6 -152 1 -159 1 -159 12 0 5 -4 7
-9 3 -5 -3 -13 0 -17 6 -4 7 -3 9 3 6 6 -4 13 0 17 8 3 8 1 17 -5 20 -5 4 -7
11 -4 16 4 5 1 9 -4 9 -15 0 -14 -13 2 -29 10 -10 8 -11 -6 -5 -14 5 -17 13
-12 31 4 18 2 23 -6 17 -8 -5 -9 -3 -4 5 5 9 10 10 18 2 6 -6 15 -11 21 -11 5
0 -2 10 -16 23 -13 12 -24 29 -23 37 0 8 -4 18 -10 22 -6 5 -6 8 3 8 6 0 12
12 12 26 0 21 4 25 18 19 13 -5 14 -4 5 6 -10 10 -16 9 -29 -2 -16 -13 -16
-12 -6 8 15 27 15 53 1 53 -5 0 -7 -4 -4 -10 3 -5 1 -18 -5 -27 -11 -17 -11
-17 -6 1 4 10 2 24 -3 30 -6 7 -6 17 -1 26 9 13 10 13 10 0 0 -13 2 -13 9 0
14 21 3 31 -22 19 -12 -7 -19 -8 -15 -4 4 4 3 16 -3 26 -7 15 -6 17 6 13 8 -3
12 -10 9 -15 -3 -5 3 -6 12 -2 11 4 13 8 6 11 -7 2 -9 9 -5 15 3 7 3 9 -2 5
-11 -11 -47 11 -39 24 4 5 1 14 -6 18 -7 4 -12 19 -12 33 0 14 -7 28 -14 31
-8 3 -11 12 -7 22 5 13 3 15 -8 9 -11 -7 -12 -6 -2 6 10 13 10 19 -3 35 -14
18 -14 18 -4 -6 l11 -25 -20 25 c-10 13 -17 28 -14 33 3 5 2 12 -3 16 -19 13
-45 73 -40 88 6 14 4 14 -10 2 -15 -12 -16 -11 -10 9 6 17 3 22 -9 22 -9 0
-13 4 -10 10 3 5 -5 21 -19 35 -15 15 -23 32 -19 41 3 8 2 14 -3 12 -5 -2 -11
2 -13 7 -3 6 -13 19 -23 29 -12 13 -14 24 -8 36 6 12 5 17 -5 17 -8 0 -11 -5
-8 -10 3 -6 1 -7 -5 -3 -7 4 -12 12 -12 18 0 5 -9 23 -21 39 -11 16 -18 36
-15 44 3 8 0 17 -6 21 -7 5 -8 2 -4 -7 4 -8 1 -5 -8 5 -8 10 -13 23 -10 27 3
5 0 9 -5 9 -6 0 -10 3 -10 8 1 4 0 10 -1 15 -1 4 -4 12 -5 17 -1 6 -3 11 -5
13 -7 8 -7 38 0 42 5 3 7 -4 5 -15 -3 -13 0 -18 7 -14 7 4 8 3 4 -4 -5 -8 -1
-10 10 -5 14 5 14 7 1 14 -9 5 -14 20 -12 34 1 15 -5 31 -14 38 -16 11 -25 81
-10 71 4 -2 10 4 14 13 3 10 1 19 -4 21 -6 2 -11 8 -11 13 0 6 9 5 21 -2 21
-11 21 -10 6 11 -16 23 -13 50 5 50 6 0 4 -8 -3 -17 -13 -16 -12 -17 4 -4 13
11 15 17 5 28 -9 12 -7 13 16 9 15 -3 24 -1 21 5 -4 5 -11 7 -16 4 -12 -8 -12
8 1 21 6 6 5 19 -5 37 -16 30 -10 37 28 33 21 -3 25 0 16 10 -6 7 -16 11 -24
8 -7 -3 -16 -1 -20 5 -3 6 0 9 8 5 8 -3 18 -1 22 5 3 6 0 11 -7 11 -8 0 -5 5
5 11 14 8 22 8 30 -1 9 -8 8 -9 -6 -4 -17 6 -18 5 -6 -15 9 -14 15 -17 18 -9
2 7 11 18 19 24 9 7 12 16 7 24 -6 10 -4 12 8 7 16 -6 16 -5 1 18 -16 25 -14
29 18 26 9 -1 20 4 24 10 5 8 2 10 -8 7 -8 -4 -21 -2 -29 3 -12 7 -12 9 1 10
29 2 55 -3 61 -13 3 -5 9 -2 12 7 4 9 3 14 -2 11 -4 -3 -13 6 -19 19 -8 18 -8
26 0 31 7 5 8 3 4 -5 -5 -8 -3 -12 5 -10 27 3 39 -1 39 -15 0 -8 4 -18 10 -21
15 -10 0 27 -24 55 -19 23 -20 24 -1 9 29 -23 49 -34 42 -23 -8 13 23 32 46
28 9 -1 15 2 11 7 -3 5 0 9 5 9 6 0 11 8 11 18 0 14 2 15 10 2 8 -12 10 -12
10 -1 0 10 3 11 14 2 11 -9 16 -9 22 0 5 8 3 9 -6 4 -8 -5 -11 -3 -8 5 4 12
18 17 60 22 9 1 14 6 12 10 -3 4 0 8 5 8 6 0 11 5 11 11 0 5 -4 8 -9 4 -5 -3
-13 -1 -16 5 -4 6 -16 8 -28 5 -19 -5 -20 -5 -4 5 9 6 22 8 27 5 6 -3 10 0 10
7 0 10 2 10 9 0 4 -8 12 -14 17 -14 5 1 8 -7 6 -16 -2 -15 -1 -15 9 1 8 13 8
22 -1 32 -17 21 7 29 34 11 28 -18 43 -9 18 11 -15 13 -14 13 7 3 19 -10 26
-9 33 1 8 11 9 10 4 -3 -3 -10 -1 -18 4 -18 5 0 7 -8 4 -17 -5 -14 -4 -15 4
-4 5 7 7 22 4 33 -3 11 1 24 9 29 24 15 34 10 13 -7 -13 -11 -15 -17 -6 -20 6
-3 9 -11 6 -17 -5 -8 -2 -8 7 1 7 6 23 12 36 12 13 0 26 7 29 15 4 11 13 13
28 9 19 -6 20 -5 6 12 -14 17 -13 18 1 7 9 -7 18 -11 21 -8 3 3 10 -1 16 -8 9
-10 8 -14 -3 -14 -8 0 -11 5 -8 11 3 6 2 7 -3 3 -4 -4 -9 -19 -10 -33 0 -13 2
-22 5 -18 3 3 6 11 6 17 0 7 12 12 26 11 18 0 25 4 22 13 -3 7 -9 10 -14 7 -5
-3 -9 -3 -9 0 0 2 -3 12 -7 22 -6 15 -3 14 17 -4 13 -12 27 -22 31 -22z m96
15 c0 -8 -6 -16 -14 -19 -11 -4 -11 -1 -3 14 13 24 17 25 17 5z m-237 -17 c0
-6 -3 -8 -6 -5 -4 3 -16 2 -28 -4 -20 -10 -20 -10 -2 5 24 19 36 20 36 4z
m-271 -92 c-3 -3 -11 5 -18 17 -13 21 -12 21 5 5 10 -10 16 -20 13 -22z m36
14 c-3 -5 -10 -10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z
m-67 -15 c-2 -6 -6 -9 -10 -7 -5 1 -8 -3 -8 -9 0 -5 -4 -8 -9 -5 -5 3 -16 -5
-25 -19 -9 -14 -20 -24 -24 -23 -4 1 -18 -4 -31 -11 -19 -11 -22 -11 -16 1 21
35 27 39 43 26 14 -11 15 -10 8 7 -4 11 -4 16 0 13 6 -6 21 3 47 29 14 14 30
12 25 -2z m1102 -155 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6
0 11 -4 11 -10z m-1360 -82 c0 -12 -10 -9 -26 6 -20 21 -17 28 6 14 11 -7 20
-16 20 -20z m-91 -134 c-6 -8 -17 -14 -23 -14 -6 0 -3 7 6 14 10 7 14 17 10
21 -4 5 -1 5 6 1 10 -6 10 -11 1 -22z m1727 -179 c0 -14 -3 -25 -7 -25 -3 0
-6 11 -6 25 0 14 3 25 6 25 4 0 7 -11 7 -25z m7 -49 c3 -8 3 -17 -1 -21 -4 -4
-7 -10 -7 -13 -2 -21 -18 -52 -27 -52 -7 0 -6 5 2 15 6 8 9 18 6 24 -4 5 1 17
10 25 8 9 11 16 5 16 -6 0 -11 5 -11 10 0 15 17 12 23 -4z m-1763 -10 c0 -2
-8 -10 -17 -17 -16 -13 -17 -12 -4 4 13 16 21 21 21 13z m1115 -116 c-4 -6 -8
-23 -10 -38 -4 -25 -3 -24 11 7 8 18 17 31 20 28 3 -3 1 -14 -5 -25 -13 -25
-14 -43 -2 -23 5 8 19 15 30 16 25 2 29 -35 6 -58 -8 -8 -12 -17 -9 -20 11
-11 -191 -203 -216 -205 -3 -1 -13 -4 -23 -8 -10 -3 -21 -4 -24 0 -4 3 1 6 10
6 9 0 17 5 17 10 0 6 -5 10 -12 10 -6 0 -9 3 -6 6 4 3 17 0 30 -7 12 -6 20 -8
15 -4 -4 5 1 18 10 29 17 20 17 20 1 7 -15 -11 -18 -11 -19 0 -1 8 0 19 1 24
1 6 3 22 4 37 1 15 4 30 8 34 4 3 5 -6 2 -21 -3 -18 -1 -24 7 -20 6 4 3 -5 -6
-21 -10 -17 -11 -22 -3 -12 8 10 17 15 20 13 3 -3 4 12 3 32 -3 52 4 60 27 32
11 -13 16 -18 12 -10 -4 9 0 19 11 28 11 7 14 13 9 13 -6 0 -15 -5 -21 -11 -7
-7 -12 -6 -16 5 -3 8 -1 18 5 22 7 5 8 2 3 -7 -6 -11 -5 -11 5 -2 7 6 10 19 6
29 -6 16 -8 16 -22 -2 -14 -18 -14 -18 -4 4 9 19 14 21 26 11 16 -13 19 2 3
18 -7 7 -4 10 13 9 13 0 22 4 21 11 -1 6 4 16 12 23 15 13 16 -4 1 -30 -5 -8
-6 -12 -1 -8 4 4 15 2 24 -5 14 -10 14 -10 4 3 -9 12 -8 23 2 48 8 17 17 32
20 32 3 0 3 -5 0 -10z m65 -15 c0 -2 -6 -5 -13 -8 -8 -3 -14 1 -14 8 0 7 6 11
14 8 7 -3 13 -6 13 -8z m545 -45 c-8 -9 -12 -20 -8 -25 5 -4 -2 -2 -14 4 -26
13 -28 17 -11 27 7 4 8 3 4 -4 -4 -7 -3 -12 2 -12 17 0 22 13 9 28 -9 13 -9
14 1 8 13 -8 16 4 5 20 -5 5 0 1 10 -10 16 -17 16 -21 2 -36z m-1185 -10 c0
-5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m24
-11 c-4 -8 1 -9 17 -5 13 3 18 3 11 0 -10 -5 -7 -10 10 -18 12 -6 27 -21 33
-34 5 -12 13 -22 17 -22 5 0 8 -9 8 -20 0 -11 5 -20 10 -20 6 0 10 -12 10 -26
0 -14 4 -23 8 -20 5 3 9 0 9 -7 0 -7 3 -23 6 -37 16 -68 16 -71 4 -64 -8 5 -8
3 1 -7 26 -28 10 -28 -49 1 -75 38 -123 82 -107 98 8 8 6 9 -9 6 -13 -4 -22 0
-26 10 -4 10 0 14 14 11 11 -2 17 0 14 6 -4 5 -10 7 -14 5 -11 -7 -34 11 -37
28 -3 21 12 21 24 0 8 -15 10 -14 16 2 4 10 4 15 0 12 -3 -4 -13 0 -21 8 -8 8
-18 12 -22 10 -4 -3 -8 1 -8 9 0 8 3 13 5 10 3 -3 11 3 18 13 8 11 9 23 3 37
-9 18 -9 19 4 3 13 -17 15 -17 32 2 20 22 30 27 19 9z m-64 -29 c0 -5 -5 -10
-11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m1205 0 c-3 -5 -11
-10 -16 -10 -6 0 -7 5 -4 10 3 6 11 10 16 10 6 0 7 -4 4 -10z m-448 -42 c-3
-8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m423 -4 c0 -8 -19 -13 -24
-6 -3 5 1 9 9 9 8 0 15 -2 15 -3z m-479 -112 c-19 -36 -37 -44 -52 -25 -13 17
-13 17 5 3 18 -14 18 -13 12 8 -5 14 -3 22 4 22 6 0 8 -4 5 -10 -3 -5 -1 -10
4 -10 6 0 11 2 11 4 0 2 3 12 7 22 4 12 3 15 -5 10 -8 -5 -10 -2 -5 10 5 15 7
15 15 0 5 -9 5 -23 -1 -34z m409 18 c0 -5 -7 -7 -15 -4 -8 4 -15 8 -15 10 0 2
7 4 15 4 8 0 15 -4 15 -10z m-679 -27 c12 -16 12 -17 -2 -6 -9 7 -20 9 -24 5
-5 -4 -5 -1 -1 6 9 16 11 15 27 -5z m209 -32 c0 -17 -19 -22 -37 -11 -15 9
-14 10 6 4 16 -4 21 -3 17 5 -4 6 -2 11 3 11 6 0 11 -4 11 -9z m355 -101 c3
-5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m-15 -30
c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m-30
-95 c-4 -5 -6 -17 -5 -26 2 -12 -3 -15 -18 -11 -20 5 -20 6 -1 13 13 5 14 8 4
8 -12 1 -12 3 -2 10 8 4 13 11 13 15 -1 3 -1 14 0 24 0 14 2 14 8 -3 5 -11 5
-24 1 -30z m-59 -58 c-10 -9 -11 -8 -5 6 3 10 9 15 12 12 3 -3 0 -11 -7 -18z
m9 -61 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10
-4z m-27 -26 c3 -11 1 -18 -4 -14 -5 3 -9 12 -9 20 0 20 7 17 13 -6z m-505
-24 c-7 -8 -15 -12 -17 -11 -5 6 10 25 20 25 5 0 4 -6 -3 -14z m499 -53 c0 -8
-6 -9 -19 -2 -10 5 -18 11 -18 12 0 2 8 3 18 3 10 0 19 -6 19 -13z m-32 -13
c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m-458
-23 c8 -36 7 -50 -4 -54 -7 -3 -10 5 -9 22 2 14 -1 28 -6 31 -4 3 -6 10 -2 15
7 11 16 5 21 -14z m6 -82 c4 -8 2 -17 -4 -20 -5 -4 -7 -10 -4 -15 3 -5 1 -11
-5 -15 -5 -3 -10 -11 -10 -16 0 -6 4 -8 8 -5 5 3 9 -1 9 -9 0 -20 -13 -19 -21
1 -4 9 -1 23 5 30 9 11 8 14 -2 14 -12 0 -12 2 -1 9 8 4 14 12 14 16 0 4 -6
12 -14 16 -10 7 -9 9 3 9 9 0 19 -7 22 -15z m442 -25 c-3 -5 -12 -10 -18 -10
-7 0 -6 4 3 10 19 12 23 12 15 0z m-1 -48 c2 -4 -4 -8 -15 -8 -10 0 -19 4 -19
8 0 10 27 10 34 0z m-14 -62 c-20 -13 -33 -13 -25 0 3 6 14 10 23 10 15 0 15
-2 2 -10z m-26 -102 c-3 -5 -13 -7 -21 -4 -9 4 -23 1 -32 -6 -14 -11 -14 -11
-3 3 13 17 66 24 56 7z m-645 -145 c-3 -19 3 -47 7 -36 3 7 13 10 22 7 14 -5
13 -2 -2 10 -11 9 -15 16 -8 16 7 0 17 -9 24 -20 14 -22 43 -27 54 -9 4 8 0 9
-15 4 -16 -5 -21 -2 -21 12 0 15 2 16 10 3 7 -11 10 -11 10 -2 0 10 5 10 22
-2 27 -19 38 -20 34 -3 -1 6 -1 8 2 4 2 -5 14 0 25 10 21 18 21 18 7 -1 -16
-21 -18 -21 36 1 11 4 15 2 12 -7 -2 -7 -14 -14 -26 -15 -33 -2 -38 -13 -5
-11 35 2 55 14 47 28 -4 6 -2 8 4 4 6 -3 13 -2 17 4 3 5 11 10 18 10 6 0 2 -7
-9 -15 -17 -13 -17 -14 -2 -15 9 0 20 5 23 10 3 6 14 9 23 9 15 -1 15 -2 0 -6
-14 -3 -16 -9 -8 -23 7 -13 7 -21 0 -25 -9 -6 -14 8 -11 28 1 5 -3 6 -9 2 -6
-3 -7 -11 -4 -17 4 -6 3 -8 -2 -5 -6 3 -16 2 -23 -3 -8 -4 -27 -4 -42 0 -19 6
-29 5 -29 -2 0 -6 -5 -7 -12 -2 -7 5 -65 9 -129 9 -99 0 -116 2 -111 14 4 10
7 11 10 3 2 -7 8 -9 13 -6 6 3 5 12 -3 22 -11 15 -11 15 3 4 13 -10 19 -9 29
3 14 16 21 19 19 8z m121 -3 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10
4 10 6 0 11 -4 11 -10z m292 -30 c7 0 6 5 -2 15 -7 8 -9 15 -6 15 4 0 14 -7
22 -15 9 -9 11 -15 4 -15 -6 0 -9 -4 -6 -9 3 -5 -10 -8 -29 -7 -19 1 -35 -2
-35 -7 0 -4 -5 -5 -11 -1 -8 4 -5 11 9 18 17 9 19 15 10 31 -9 17 -8 17 11 -2
12 -13 27 -23 33 -23z m-488 15 c-4 -8 -11 -15 -16 -15 -6 0 -5 6 2 15 7 8 14
15 16 15 2 0 1 -7 -2 -15z m420 -19 c-14 -11 -21 -11 -26 -3 -5 8 1 14 15 18
30 8 35 2 11 -15z m-314 -111 c-7 -9 -10 -18 -6 -22 3 -4 13 2 21 13 14 18 15
17 11 -10 -5 -30 -16 -48 -16 -26 0 10 -3 10 -15 0 -13 -11 -14 -10 -10 2 4 9
0 15 -9 15 -8 0 -12 -6 -9 -14 6 -14 -21 -13 -61 3 -17 6 -17 8 -1 16 12 7 22
5 38 -9 l21 -18 -17 28 c-10 15 -13 27 -8 27 5 0 11 -6 13 -12 4 -10 11 -8 29
4 30 21 35 22 19 3z m85 -19 c8 4 12 11 8 18 -4 6 2 4 12 -4 17 -14 18 -13 12
5 -7 20 -7 20 8 1 8 -11 15 -23 15 -28 0 -4 7 -5 16 -1 13 5 13 7 2 14 -7 5
-8 9 -3 9 6 0 3 5 -5 10 -9 6 -10 10 -3 10 15 0 35 -35 26 -44 -3 -3 -1 -6 5
-6 7 0 12 2 12 4 0 2 3 12 7 22 4 12 3 15 -5 10 -7 -4 -12 -5 -12 -2 0 18 21
12 32 -9 13 -24 15 -24 33 -9 18 14 18 15 2 10 -10 -3 -16 -2 -12 3 3 5 -1 11
-7 14 -7 2 -1 4 13 3 21 -1 26 -5 23 -21 -2 -10 2 -23 9 -28 8 -6 6 -7 -5 -3
-10 3 -18 2 -18 -2 0 -4 -49 -7 -109 -7 -99 -1 -109 1 -108 17 1 10 5 18 9 18
4 0 5 8 1 18 -4 12 0 10 11 -5 9 -13 23 -20 31 -17z m439 -133 c-20 -27 -50
-38 -59 -23 -3 5 -1 11 5 15 6 4 7 12 4 18 -4 7 -3 8 2 4 5 -5 10 -13 10 -18
1 -5 2 -12 3 -16 2 -9 41 38 41 50 0 6 3 7 7 4 4 -4 -2 -19 -13 -34z m-75 -26
c-2 -1 -12 -9 -22 -16 -15 -12 -17 -12 -11 3 3 9 13 16 22 16 8 0 13 -1 11 -3z"/>
<path d="M1362 2488 c-15 -15 -15 -28 -2 -28 6 0 9 3 9 8 -3 19 2 25 11 12 6
-9 10 -10 10 -3 0 18 -15 24 -28 11z"/>
<path d="M1239 2488 c-6 -27 -5 -39 4 -45 7 -3 9 -3 5 2 -4 4 -3 14 3 21 7 8
7 14 -1 19 -5 3 -10 5 -11 3z"/>
<path d="M1029 2456 c6 -7 9 -22 5 -32 -5 -18 -5 -18 6 -1 9 13 15 15 31 7 15
-8 19 -8 17 2 -2 7 3 12 10 11 6 -2 12 2 12 7 0 13 -17 13 -25 -1 -5 -7 -15
-5 -31 5 -29 20 -40 20 -25 2z"/>
<path d="M1546 2462 c-3 -5 1 -9 9 -9 8 0 15 4 15 9 0 4 -4 8 -9 8 -6 0 -12
-4 -15 -8z"/>
<path d="M1175 2451 c-3 -5 -2 -12 3 -15 5 -3 9 1 9 9 0 17 -3 19 -12 6z"/>
<path d="M1710 2420 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M1860 2319 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M815 2300 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M736 2282 c-3 -5 1 -9 9 -9 8 0 12 4 9 9 -3 4 -7 8 -9 8 -2 0 -6 -4
-9 -8z"/>
<path d="M660 2217 c0 -2 6 -10 14 -16 11 -9 16 -9 22 1 4 7 4 10 -1 6 -4 -4
-14 -3 -22 3 -7 6 -13 9 -13 6z"/>
<path d="M568 2077 c6 -7 16 -24 22 -38 10 -24 10 -24 5 4 -3 16 -1 27 5 27 6
0 8 5 4 11 -4 8 -9 7 -15 -2 -6 -10 -9 -11 -9 -1 0 6 -5 12 -11 12 -8 0 -8 -4
-1 -13z"/>
<path d="M550 1939 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M527 1873 c-16 -33 -16 -55 -1 -60 7 -2 10 7 8 24 -1 15 2 35 7 45 5
10 7 18 5 18 -3 0 -12 -12 -19 -27z"/>
<path d="M542 1702 c-9 -6 -7 -13 10 -28 20 -17 21 -17 8 -1 -12 16 -12 20 1
28 8 5 10 9 4 9 -5 0 -16 -4 -23 -8z"/>
<path d="M1835 1605 c1 -14 -2 -28 -6 -31 -12 -7 -11 -24 2 -24 5 0 7 5 4 10
-3 6 -2 10 3 10 5 0 9 14 9 30 0 17 -4 30 -8 30 -4 0 -6 -11 -4 -25z"/>
<path d="M591 1594 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M1315 1520 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M640 1486 c0 -2 7 -9 15 -16 13 -11 14 -10 9 4 -5 14 -24 23 -24 12z"/>
<path d="M1315 1480 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1778 1460 c-9 -17 -13 -30 -7 -30 6 0 7 -5 3 -12 -4 -7 -3 -8 4 -4
6 4 8 14 5 23 -4 11 -3 14 5 9 8 -5 10 -2 5 10 -5 14 -3 15 18 5 21 -11 22
-10 7 2 -10 8 -15 17 -11 20 3 4 2 7 -3 7 -5 0 -17 -14 -26 -30z"/>
<path d="M700 1405 c0 -8 4 -15 10 -15 5 0 7 7 4 15 -4 8 -8 15 -10 15 -2 0
-4 -7 -4 -15z"/>
<path d="M990 1320 c0 -5 9 -14 20 -20 11 -6 20 -9 20 -8 0 2 -9 11 -20 21
-11 9 -20 13 -20 7z"/>
<path d="M1685 1320 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1563 1265 c0 -8 4 -15 9 -15 4 0 8 4 8 9 0 6 -4 12 -8 15 -5 3 -9
-1 -9 -9z"/>
<path d="M1070 1261 c0 -6 4 -11 10 -11 5 0 7 -7 4 -15 -4 -8 -4 -15 -1 -15
13 0 14 30 1 40 -10 9 -14 9 -14 1z"/>
<path d="M1620 1260 c-9 -6 -10 -10 -3 -10 6 0 15 5 18 10 8 12 4 12 -15 0z"/>
<path d="M816 1193 c-6 -14 -5 -15 5 -6 7 7 10 15 7 18 -3 3 -9 -2 -12 -12z"/>
<path d="M866 1118 c3 -5 10 -6 15 -3 13 9 11 12 -6 12 -8 0 -12 -4 -9 -9z"/>
<path d="M877 1077 c-3 -8 -2 -20 3 -26 5 -9 8 -4 8 13 0 29 -3 32 -11 13z"/>
<path d="M1390 1061 c0 -5 7 -12 16 -15 14 -5 15 -4 4 9 -14 17 -20 19 -20 6z"/>
<path d="M915 1029 c-4 -6 -5 -12 -2 -15 2 -3 7 2 10 11 7 17 1 20 -8 4z"/>
<path d="M1394 1022 c3 -18 18 -20 24 -4 1 5 -4 12 -12 15 -9 4 -13 0 -12 -11z"/>
<path d="M954 767 c0 -13 5 -24 12 -24 6 0 10 7 9 16 -2 9 -4 19 -4 24 -2 18
-17 4 -17 -16z"/>
<path d="M1564 1580 c0 -9 5 -17 11 -17 6 0 12 8 12 17 1 9 -4 17 -11 17 -6 0
-12 -8 -12 -17z"/>
<path d="M1075 1570 c-3 -5 -5 -10 -3 -11 33 -8 38 -7 27 7 -14 17 -16 17 -24
4z"/>
<path d="M1130 1550 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M1044 1538 c-5 -7 -2 -9 8 -5 9 3 22 0 29 -6 11 -10 11 -9 0 6 -16
20 -27 22 -37 5z"/>
<path d="M1135 1520 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M1141 387 c-8 -10 -7 -14 2 -14 8 0 14 6 14 14 0 7 -1 13 -2 13 -2 0
-8 -6 -14 -13z"/>
<path d="M1407 376 c-4 -10 -1 -13 8 -9 8 3 12 9 9 14 -7 12 -11 11 -17 -5z"/>
<path d="M1110 236 c0 -2 7 -7 16 -10 8 -3 12 -2 9 4 -6 10 -25 14 -25 6z"/>
<path d="M1247 237 c-3 -9 3 -12 22 -11 39 2 41 3 41 15 0 8 -5 8 -15 -1 -11
-9 -18 -10 -29 -1 -10 9 -15 8 -19 -2z"/>
<path d="M1320 241 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
<path d="M1400 241 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
<path d="M2100 2286 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
13z"/>
<path d="M2276 2011 c-17 -19 -17 -20 4 -31 12 -6 24 -9 27 -7 2 3 -5 8 -17
12 -20 6 -21 8 -4 26 9 10 15 19 12 19 -3 0 -13 -9 -22 -19z"/>
<path d="M2215 1460 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M530 1420 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M2110 1350 c8 -5 20 -10 25 -10 6 0 3 5 -5 10 -8 5 -19 10 -25 10 -5
0 -3 -5 5 -10z"/>
<path d="M2070 1281 c0 -6 4 -12 8 -15 5 -3 9 1 9 9 0 8 -4 15 -9 15 -4 0 -8
-4 -8 -9z"/>
<path d="M1890 850 c0 -5 -8 -7 -17 -3 -10 3 -15 3 -12 -1 4 -4 16 -8 27 -11
15 -2 19 0 15 11 -6 16 -13 19 -13 4z"/>
<path d="M1876 755 c-9 -26 -7 -32 5 -12 6 10 9 21 6 23 -2 3 -7 -2 -11 -11z"/>
<path d="M1773 435 c0 -8 4 -12 9 -9 5 3 6 10 3 15 -9 13 -12 11 -12 -6z"/>
<path d="M1749 403 c0 -5 -2 -16 -4 -26 -2 -9 1 -15 6 -11 5 3 7 10 4 15 -4 5
-1 9 4 9 6 0 11 5 11 10 0 11 -20 14 -21 3z"/>
<path d="M1771 364 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M1756 322 c-3 -5 1 -9 9 -9 8 0 12 4 9 9 -3 4 -7 8 -9 8 -2 0 -6 -4
-9 -8z"/>
<path d="M1745 289 c-4 -6 -5 -13 -2 -16 7 -7 27 6 27 18 0 12 -17 12 -25 -2z"/>
<path d="M1770 260 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M1756 171 c-3 -5 1 -11 9 -14 9 -4 12 -1 8 9 -6 16 -10 17 -17 5z"/>
<path d="M1725 80 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M1040 66 c0 -2 7 -7 16 -10 8 -3 12 -2 9 4 -6 10 -25 14 -25 6z"/>
<path d="M1086 62 c-3 -5 1 -9 9 -9 8 0 12 4 9 9 -3 4 -7 8 -9 8 -2 0 -6 -4
-9 -8z"/>
<path d="M1557 42 c-19 -21 -11 -38 10 -21 7 6 13 8 13 4 0 -4 7 -2 15 5 13
11 13 15 3 21 -19 12 -23 11 -41 -9z"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 28 KiB