From 9ca05db5e4fe58795668f977881e30b7f79bf9d5 Mon Sep 17 00:00:00 2001 From: Nero Date: Fri, 25 Sep 2020 10:25:34 +0200 Subject: [PATCH] Change Todo, remove code --- .gitignore | 1 - README.md | 2 + addReactions.html | 93 ---- addReponse.js | 85 ---- app.css | 119 ----- app.js | 1044 ------------------------------------------ css/lightbox.min.css | 1 - documentation.md | 95 ---- images/close.png | Bin 280 -> 0 bytes images/loading.gif | Bin 8476 -> 0 bytes images/next.png | Bin 1350 -> 0 bytes images/prev.png | Bin 1360 -> 0 bytes img/1.png | Bin 1006 -> 0 bytes img/2.png | Bin 1070 -> 0 bytes img/3.png | Bin 1115 -> 0 bytes img/4.png | Bin 1089 -> 0 bytes img/5.png | Bin 1136 -> 0 bytes img/6.png | Bin 1100 -> 0 bytes img/luna.png | Bin 27673 -> 0 bytes index.html | 211 --------- js/lightbox.min.js | 15 - manifest/kara.json | 16 - 22 files changed, 2 insertions(+), 1680 deletions(-) delete mode 100644 .gitignore delete mode 100644 addReactions.html delete mode 100644 addReponse.js delete mode 100644 app.css delete mode 100644 app.js delete mode 100644 css/lightbox.min.css delete mode 100644 documentation.md delete mode 100644 images/close.png delete mode 100644 images/loading.gif delete mode 100644 images/next.png delete mode 100644 images/prev.png delete mode 100644 img/1.png delete mode 100644 img/2.png delete mode 100644 img/3.png delete mode 100644 img/4.png delete mode 100644 img/5.png delete mode 100644 img/6.png delete mode 100644 img/luna.png delete mode 100644 index.html delete mode 100644 js/lightbox.min.js delete mode 100644 manifest/kara.json diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 723ef36..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.idea \ No newline at end of file diff --git a/README.md b/README.md index e69de29..01d6dc9 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,2 @@ +Kara has been moved to luna-development core repository. +This repository is only for issues. \ No newline at end of file diff --git a/addReactions.html b/addReactions.html deleted file mode 100644 index f299267..0000000 --- a/addReactions.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - Kara - Add reponses - - - - - - - - -
-
- - {{ this.name }} -
- -
-
-
Add Reaction
-
- - -
-
- - -
-
- - (Wildcards: $username$, $botname$) - -
- -
-
-
-
-
-
- - -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/addReponse.js b/addReponse.js deleted file mode 100644 index e924122..0000000 --- a/addReponse.js +++ /dev/null @@ -1,85 +0,0 @@ -let responses = new Vue({ - el: '#kara', - data: { - name: 'Kara', - activeTheme: 'slate', - addModal: { - includeAll: false, - keywords: 'keyword', - responses: [ - 'Answer #1' - ] - }, - defaultAddModal: { - includeAll: false, - keywords: 'keyword', - responses: [ - 'Answer #1' - ] - } - }, - mounted() { - this.addModal = this.defaultAddModal; - }, - methods: { - addMessage(body, bot, me = false) { - this.messages.push({ - body: body, - bot: bot, - command: body.search('/') === 0, - me: me, - time: Date.now() - }) - }, - addResponseToInput() { - this.addModal.responses.push(''); - }, - addNewReaction() { - let includeAll = this.addModal.includeAll; - let keywords = this.addModal.keywords.split(','); - let responses = this.addModal.responses; - - let newReaction = { - includeAll: includeAll, - keywords: keywords, - responses: responses - }; - - axios.post('/reactions/create', { - reaction: newReaction - }).then((response) => { - alertify.notify('Reaction saved!', 'success'); - this.addModal = this.defaultAddModal; - }).catch((error) => { - console.log(error); - alertify.notify(error, 'danger'); - }); - }, - cleanupMessage(message) { - message = message.toLowerCase(); - return message.replace('?', '') - .replace('!', '') - .replace('.', '') - .replace(',', '') - .replace('-', '') - .replace('_', '') - .replace('#', '') - .replace('\'', '') - .replace('"', '') - .replace('+', '') - .replace('*', '') - .replace('ยง', '') - .replace('$', '') - .replace('%', '') - .replace('&', '') - .replace('/', '') - .replace('(', '') - .replace(')', '') - .replace('=', '') - .replace('\\', '') - .replace('@', '') - .replace('~', '') - .replace('โ€ฆ', ''); - } - } -}); diff --git a/app.css b/app.css deleted file mode 100644 index 2d946a7..0000000 --- a/app.css +++ /dev/null @@ -1,119 +0,0 @@ -body { - margin: 15px; - padding: 0; -} - -#kara { - margin: 0; - padding: 0; - width: auto; -} - -@media (min-width: 40em) { - #kara, - #kara-banner, - #chatbox-wrapper { - margin-left: auto; - margin-right: auto; - padding: 0; - width: 40em; - } -} - -.message { - color: black; - padding: 10px; - margin-bottom: 5px; - min-width: 55%; - max-width: 80%; -} - -img.message-image { - max-width: 60%; - border-radius: 0 15px 15px 15px; - - margin-bottom: 5px; - clear: top; -} - -.bot-message { - border-radius: 0 15px 15px 15px; - background-color: lightgreen; -} - -.user-message { - border-radius: 15px 0 15px 15px; - background-color: lightblue; -} - -#chat-box { - margin-top: 4em; - padding-right: 15px; - overflow-y: scroll; - height: 65vh; - padding-bottom: 2em; -} - -#chatbox-wrapper { - position: fixed; - padding: 1em; - bottom: 0; - left: 0; - right: 0; -} - -#kara-banner { - position: fixed; - height: 3.2em; - top: 0; - left: 0; - right: 0; - text-align: center; - padding: 0.7em; -} - -#kara-banner .btn, .add-response-input-button { - margin-top: -0.3em; -} - -.response-input { - margin-bottom: 3px; -} - -.form-button { - width: 100%; -} - -.command-message { - color: grey; -} - -.command-message::before { - content: '$: '; -} - -.header-logo { - max-height: 32px; - max-width: 32px; - width: 32px; - height: 32px; - margin-right: 5px; -} - -.me-message { - background-color: orange; -} - -#addForm { - margin-top: 60px; -} - -.fa-check-circle { - color: green; -} - -.message-container { - overflow-y: auto; - overflow-x: hidden; - max-height: 300px -} diff --git a/app.js b/app.js deleted file mode 100644 index c2a2097..0000000 --- a/app.js +++ /dev/null @@ -1,1044 +0,0 @@ -let kara = new Vue({ - el: '#kara', - data: { - features: { - changeName: false, - themes: false, - setNameAtStart: true - }, - documentation: '', - messages: [], - talk: false, - lastMessage: null, - lastMessageData: {}, - name: 'Kara', - location: null, - chatbox: null, - isTyping: false, - askedForName: false, - awaitTodo: false, - username: '', - themes: null, - activeTheme: 'slate', - addModal: { - includeAll: false, - keywords: '', - responses: [ - 'Answer #1' - ] - }, - settingsModal: { - name: null, - username: null, - location: '' - }, - todos: [], - reactions: [] - }, - mounted() { - this.getSavedData(); - this.getReactions(); - this.getDocumentation(); - - if (this.features.themes) { - this.getBootswatchThemes(); - } - - this.settingsModal = { - name: this.name, - username: this.username, - location: this.location - }; - - if (!this.username || this.username === "null") { - this.initialGreeting(); - - if (this.features.setNameAtStart) { - this.askForName(); - } - - this.stopTyping(); - } else { - this.welcomeBack(); - } - - document.getElementById('chatinput').focus(); - document.title = this.name; - - setInterval(() => { - this.getReactions(); - }, 15000); - - this.scrollDown(); - }, - methods: { - // Initial - initialGreeting() { - this.botMessage( - this.oneOf( - [ - "Hi! I'm " + this.name + ". :)", - "Hi, nice to meet you! My name is " + this.name + ". :)" - ] - ), - false - ); - }, - welcomeBack() { - this.botMessage( - this.oneOf( - [ - "Hi! Haven't heard of you in a while. :)", - "Welcome back! :)", - "Hey :) Good to see you :)", - ] - ), - false - ); - }, - - // Name - askForName() { - this.botMessage( - this.oneOf([ - 'May i ask for your name?', - 'Whats your name? :)', - 'How can i call you?', - 'How did your developers call you? :)' - ]), - false - ); - - this.askedForName = true; - }, - setName(message) { - this.username = message.trim(); - this.settingsModal.username = this.username; - this.askedForName = false; - - this.botMessage( - this.oneOf([ - "That's a beautiful name!", - "Okay, i'll call you " + this.username + " from now on :)", - "Nice to meet you, " + this.username + ". :D" - ]) - ) - }, - - // Messages / Chat - addMessage(body, bot, me = false) { - this.messages.push({ - body: body, - bot: bot, - command: body.search('/') === 0, - me: me, - time: Date.now() - }) - }, - addImageMessage(imageObject, bot) { - this.lastMessageData = imageObject; - - this.messages.push({ - body: imageObject.body, - bot: bot, - src: imageObject.src - - }); - - setTimeout(() => { - this.scrollDown(); - }, 1000); - - this.stopTyping(); - this.updateStorage(); - }, - botMessage(message, save = true) { - this.addMessage(message, true); - - if (this.talk) { - this.say(message); - } - - this.stopTyping(); - - if (save) { - this.updateStorage(); - } - }, - userMessage(body) { - this.addMessage(body, false); - this.lastMessage = body; - - this.updateStorage(); - }, - sendMessage() { - if (this.chatbox.trim() === '') { - return false; - } - - if (this.chatbox.search('/me') !== 0) { - this.userMessage(this.chatbox); - } - this.scrollDown(); - this.react(this.chatbox); - this.chatbox = ''; - }, - meMessage(message) { - this.addMessage(this.username + ' ' + message, false, true); - this.react(message, true); - }, - react(message, recursive = false) { - this.startTyping(); - - if (message.search('/') === 0 && !recursive) { - setTimeout(() => { - this.processCommands(message); - this.scrollDown(); - }, 1000); - } else { - setTimeout(() => { - // Check commands - if (this.askedForName === true) { - this.setName(message); - } else if (this.awaitTodo === true) { - this.saveTodo(message); - } else { - let answer = this.getReaction(message); - if (answer) { - this.botMessage(answer); - } - - this.updateStorage(); - } - - this.scrollDown(); - }, 1800); - } - }, - getReaction(message) { - let preserveLastMessageData = false; - message = this.cleanupMessage(message); - - let keywords = message.split(' '); - let answer = undefined; - - if (this.lastMessageData.joke && this.includesOneOf(keywords, ['another', 'more'])) { - this.tellJoke(this.lastMessageData.category); - return false; - } - - if (this.lastMessageData.meme && this.includesOneOf(keywords, ['another', 'more'])) { - this.getRandomMeme(this.lastMessageData.category); - return false; - } - - if (this.lastMessageData.isJeopardy) { - if (this.includesAllOf(keywords, ['give', 'up'])) { - this.lastMessageData = {}; - return 'The right question would have been: "' + this.lastMessageData.question + '"'; - } - - if (this.isSimilar(message, this.lastMessageData.question)) { - this.lastMessageData = {}; - return this.oneOf([ - 'Wow! This is the right question.', - 'Correct!' - ]); - } else { - return this.oneOf([ - "Sorry, that's not correct.", - "That's not what we're searching for.", - "Nope, sorry. You can always give up by typing \"I give up\" if you wan't to.", - ]); - } - } - - if (this.lastMessageData.isTrivia) { - if (this.includesAllOf(keywords, ['give', 'up'])) { - this.lastMessageData = {}; - return this.oneOf([ - 'The right answer would have been: "' + this.lastMessageData.question + '"' - ]); - } - - if (this.isSimilar(message, this.lastMessageData.answer)) { - this.lastMessageData = {}; - return this.oneOf([ - 'Congratulations! This is the correct answer.', - 'Correct!' - ]); - } else { - return this.oneOf([ - "Sorry, that's not correct.", - "That's not what we're searching for.", - "Nope, sorry. You can always give up by typing \"I give up\" if you wan't to.", - ]); - } - } - - if (!preserveLastMessageData) { - this.lastMessageData = {}; - } - - if (this.includesAllOf(keywords, ['change', 'my', 'name'])) { - this.askedForName = true; - return "Please tell me how i should call you."; - } - - if (this.includesAllOf(keywords, ['new', 'todo']) || - this.includesAllOf(keywords, ['new', 'task']) || - this.includesAllOf(keywords, ['take', 'todo']) || - this.includesAllOf(keywords, ['save', 'to', 'clipboard']) - ) { - this.awaitTodo = true; - return this.oneOf([ - "What do you wan't me to save for you?", - "Tell me what you wan't to save.", - "What is it you wan't to save?", - ]); - } - - if (this.includesAllOf(keywords, ['clear', 'chat'])) { - this.clearChat(); - return false; - } - - if (this.includesAllOf(keywords, ['play']) && - this.includesOneOf(keywords, ['quiz', 'trivia']) - ) { - this.startQuiz(); - return false; - } - - if (this.includesAllOf(keywords, ['play', 'jeopardy'])) { - this.startJeopardy(); - return false; - } - - if (this.includesAllOf(keywords, ['roll', 'dice'])) { - this.rollDice(); - return false; - } - - if (this.includesAllOf(keywords, ['clear', 'chat'])) { - this.clearChat(); - return false; - } - - if (this.includesAllOf(keywords, ['weather']) && - this.includesOneOf(keywords, ['how','hows', 'what', 'whats']) - ) { - this.checkWeather(); - return false; - } - - if (this.includesAllOf(keywords, ['knock', 'joke'])) { - this.tellJoke('knock-knock'); - return false; - } - - if (this.includesAllOf(keywords, ['joke']) && this.includesOneOf(keywords, ['coding', 'programming', 'code', 'it'])) { - this.tellJoke('programming'); - return false; - } - - if (this.includesAllOf(keywords, ['birb', 'meme'])) { - this.getRandomMeme('birbmemes'); - return false; - } - - if (this.includesAllOf(keywords, ['anime', 'meme'])) { - this.getRandomMeme('animememes'); - return false; - } - - if (this.includesAllOf(keywords, ['coding', 'meme'])) { - this.getRandomMeme('codingmemes'); - return false; - } - - if (this.includesAllOf(keywords, ['dank', 'meme'])) { - this.getRandomMeme('dankmemes'); - return false; - } - - if (this.includesAllOf(keywords, ['meme']) && - this.includesOneOf(keywords, ['get', 'send']) - ) { - this.getRandomMeme(); - return false; - } - - if (this.includesAllOf(keywords, ['joke']) && this.includesOneOf(keywords, ['coding', 'programming', 'code', 'it'])) { - this.tellJoke('programming'); - return false; - } - - if (this.includesAllOf(keywords, ['tell', 'joke']) || - this.includesAllOf(keywords, ['something', 'funny']) || - this.includesAllOf(keywords, ['cheer', 'me', 'up']) - ) { - this.tellJoke('general'); - return false; - } - - if (this.includesAllOf(keywords, ['whats', 'the', 'time']) || this.includesAllOf(keywords, ['how', 'late'])) { - return "It's " + moment().format('LT'); - } - - if (this.includesAllOf(keywords, ['what', 'day', 'it'])) { - return "It's " + moment().format('dddd') + "."; - } - - if (this.includesAllOf(keywords, ['what', 'date', 'it']) || this.includesAllOf(keywords, ['whats', 'the', 'date'])) { - return "It's " + moment().format('dddd') + ", " + moment().format('MMMM Do YYYY') + "."; - } - - this.reactions.forEach((reactionOption) => { - if (reactionOption.includeAll === true) { - if (this.includesAllOf(keywords, reactionOption.keywords)) { - answer = this.oneOf(reactionOption.responses); - } - } else { - if (this.includesOneOf(keywords, reactionOption.keywords)) { - answer = this.oneOf(reactionOption.responses); - } - } - }); - - if (answer) { - return answer; - } - - this.rsaBackupAnswer(message); - }, - - // Forms - saveSettings() { - this.name = this.settingsModal.name; - this.username = this.settingsModal.username; - this.location = this.settingsModal.location; - this.updateStorage(); - - this.scrollDown(); - }, - - // Commands - processCommands: function (message) { - let commandExecuted = false; - - if (this.checkForCommands(message, 'todo')) { - let todoToSave = this.checkForCommands(message, 'todo'); - this.saveTodo(todoToSave); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'clear')) { - this.clearChat(); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'weather')) { - this.checkWeather(); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'joke')) { - this.tellJoke(this.checkForCommands(message, 'joke')); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'meme')) { - this.getRandomMeme(this.checkForCommands(message, 'meme')); - commandExecuted = true; - } else if (this.checkForCommands(message, 'me ')) { - this.meMessage(this.checkForCommands(message, 'me ')); - commandExecuted = true; - } - - let animals = [ - {animal: 'birb', emoji: '๐Ÿฆ'}, - {animal: 'dog', emoji: '๐Ÿถ'}, - {animal: 'cat', emoji: '๐Ÿฑ'}, - {animal: 'fox', emoji: '๐ŸฆŠ'}, - {animal: 'panda', emoji: '๐Ÿผ'}, - {animal: 'red_panda', emoji: '๐Ÿคฉ'}, - {animal: 'koala', emoji: '๐Ÿจ'} - ]; - - animals.forEach((animal) => { - if (this.checkForCommands(message, animal.animal + 'Img')) { - this.rsaRandomAnimalImage(animal.animal, animal.emoji); - commandExecuted = true; - } - - if (this.checkForCommands(message, animal.animal + 'Fact')) { - this.rsaRandomAnimalFact(animal.animal, animal.emoji); - commandExecuted = true; - } - }); - - animals.forEach((animal) => { - if (this.checkForCommands(message, animal.animal)) { - this.rsaRandomAnimalImage(animal.animal, animal.emoji); - commandExecuted = true; - } - }); - - if (this.checkForCommands(message, 'lyrics')) { - this.rsaLyrics(this.checkForCommands(message, 'lyrics')); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'quiz')) { - this.startQuiz(); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'jeopardy')) { - this.startJeopardy(); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'dice')) { - this.rollDice(); - commandExecuted = true; - } - - if (this.checkForCommands(message, 'talk')) { - this.talk = !this.talk; - commandExecuted = true; - } - - if (this.checkForCommands(message, 'say')) { - this.botMessage(this.checkForCommands(message, 'say')); - commandExecuted = true; - } - - if (this.checkForCommands(message, '66')) { - this.botMessage("But the children.."); - commandExecuted = true; - } - - if (!commandExecuted) { - this.isTyping = false; - this.botMessage("I can't find that command, sorry. ๐Ÿ˜–"); - } - - this.lastMessage = message; - }, - checkForCommands(message, commands) { - if (!Array.isArray(commands)) { - commands = [commands]; - } - - let commandFound = false; - let parameter = false; - - commands.forEach((command) => { - if (commandFound) { - return; - } - let commandString = '/' + command.toLowerCase(); - - if (message.search(commandString) === 0) { - parameter = message.replace(commandString, '').trim(); - commandFound = true; - } - }); - - return parameter ? parameter : commandFound; - }, - checkWeather() { - let Kara = this; - - if (!Kara.location) { - Kara.botMessage('Please set your location in the settings. โš™'); - return; - } - - let city = this.location.toLowerCase(); - let url = 'https://api.openweathermap.org/data/2.5/weather?q=' + city + '&appid=8a1aa336da8899c1038bf6bd808d8961&units=metric'; - - axios.get(url) - .then(function (response) { - Kara.botMessage('In ' + response.data.name + ' it\'s ' + response.data.main.temp.toFixed() + 'ยฐC with ' + response.data.weather[0].description + '.'); - }) - .catch(function (error) { - alertify.notify(error, 'danger'); - Kara.botMessage('I couldn\'t check the weather for your location. ๐Ÿค”'); - }) - - this.updateStorage(); - }, - getRandomMeme(category = 'memes') { - let Kara = this; - let url = 'https://meme-api.herokuapp.com/gimme/'; - - let categorySet = false; - - if (category !== true && category !== false) { - category = category.trim(); - categorySet = true; - } else { - category = 'memes' - } - - axios.get(url + category) - .then(function (response) { - Kara.addImageMessage({ - body: response.data.title, - src: response.data.url - }, true); - - Kara.lastMessageData = { - meme: true, - category: category - }; - }) - .catch(function (error) { - Kara.botMessage("Hmm.. i can't think of any good memes right now, sorry.. ๐Ÿ˜ž"); - }) - - this.updateStorage(); - }, - tellJoke(category) { - let Kara = this; - let categorySet = false; - - if (category !== true && category !== false) { - category = category.trim(); - categorySet = true; - } else { - category = 'general' - } - - let url = 'https://official-joke-api.appspot.com/jokes/' + category + '/random'; - - axios.get(url) - .then(function (response) { - let joke = response.data[0]; - - Kara.botMessage(joke.setup); - - setTimeout(() => { - Kara.botMessage(joke.punchline); - Kara.scrollDown(); - }, 3500); - - Kara.lastMessageData = { - joke: true, - category: category - }; - }) - .catch(function (error) { - console.log(error); - - if (categorySet) { - Kara.botMessage("Sorry, i don't know any jokes about this topic.. ๐Ÿ™„"); - } else { - Kara.botMessage("I can't remember any jokes right now, sorry. ๐Ÿ˜ข"); - } - }); - - this.updateStorage(); - }, - startQuiz() { - let Kara = this; - let url = 'https://jservice.io/api/random'; - - axios.get(url) - .then(function (response) { - let clue = response.data[0]; - - Kara.botMessage('Okay! Here is your question from the category "' + clue.category.title + '":'); - Kara.botMessage(clue.question); - - Kara.lastMessageData = { - isTrivia: true, - answer: clue.answer - }; - }) - .catch(function (error) { - Kara.botMessage("It's not a good time for a quiz."); - }); - - this.updateStorage(); - }, - startJeopardy() { - let Kara = this; - let url = 'https://jservice.io/api/random'; - - axios.get(url) - .then(function (response) { - let clue = response.data[0]; - - Kara.botMessage('Okay! Here we go. The category is "' + clue.category.title + '":'); - Kara.botMessage(clue.answer); - - Kara.lastMessageData = { - isJeopardy: true, - question: clue.question - }; - }) - .catch(function (error) { - Kara.botMessage("It's not a good time for a quiz."); - }); - - this.updateStorage(); - }, - rollDice() { - let dice = Math.random()*6; - - if (dice < 1) { - dice = 1; - } else { - dice = Math.floor(dice); - } - - this.addImageMessage({ - body: dice + '!', - src: 'img/' + dice + '.png' - }, true); - - this.updateStorage(); - }, - - // Todos - saveTodo(message) { - this.awaitTodo = false; - - this.todos.push({ - time: moment(), - body: message, - checked: false - }); - - this.updateStorage(); - - this.botMessage( - this.oneOf([ - "Saved! :)", - "You can read and check your todos in the clipboard-section. :)" - ]) - ) - }, - clearTodos() { - this.todos = []; - - this.botMessage( - this.oneOf([ - "Todos cleared. ๐Ÿšฎ" - ]) - ); - - this.updateStorage(); - }, - - // Some Random API Commands - rsaRandomAnimalImage(animal, emoji = '๐Ÿ˜„') { - let Kara = this; - - Kara.startTyping(); - - axios.post('/api/curlJson', { - url: 'https://some-random-api.ml/img/' + animal - }) - .catch((error) => { - Kara.botMessage("Sorry, i can't find any good pictures right now ๐Ÿ™" + emoji); - }) - .then((response) => { - Kara.addImageMessage({ - body: emoji, - src: response.data.link - }, true); - }) - }, - rsaRandomAnimalFact(animal, emoji = '๐Ÿ˜„') { - let Kara = this; - - Kara.startTyping(); - - axios.post('/api/curlJson', { - url: 'https://some-random-api.ml/facts/' + animal - }) - .catch((error) => { - Kara.botMessage("Sorry, i can't think of any good facts right now ๐Ÿ™" + emoji); - }) - .then((response) => { - Kara.botMessage(response.data.fact); - }) - }, - rsaLyrics(searchFor) { - let Kara = this; - - Kara.startTyping(); - - axios.post('/api/curlJson', { - url: 'https://some-random-api.ml/lyrics/?title=' + searchFor.replace(' ', '%20') - }) - .catch((error) => { - Kara.botMessage("Hmm.. i just can't remember the lyrics, but i love that song! ๐ŸŽต๐ŸŽง"); - }) - .then((response) => { - Kara.addImageMessage({ - body: "Here you go!
" + - "
" + - response.data.title + ' from ' + response.data.author + '
' + - '
' + - response.data.lyrics, - src: response.data.thumbnail.genius - }, true); - }) - }, - rsaBackupAnswer(message) { - let Kara = this; - - Kara.startTyping(); - - axios.post('/api/curlJson', { - url: 'https://some-random-api.ml/chatbot?message=' + message - }) - .catch((error) => { - Kara.botMessage("I don't know what to say.."); - }) - .then((response) => { - Kara.botMessage(response.data.response); - }); - }, - - // LocalStorage - getSavedData() { - let savedName = localStorage.getItem('name'); - - this.name = savedName ? savedName : this.name; - - let savedUsername = localStorage.getItem('username'); - this.username = savedUsername ? savedUsername : null; - - let savedActiveTheme = localStorage.getItem('activeTheme'); - this.activeTheme = savedActiveTheme ? savedActiveTheme : 'slate'; - - let savedMessages = JSON.parse(localStorage.getItem('messages')); - this.messages = savedMessages ? savedMessages : []; - - let savedTodos = JSON.parse(localStorage.getItem('todos')); - this.todos = savedTodos ? savedTodos : []; - - let savedLastMessage = JSON.parse(localStorage.getItem('lastMessage')); - this.lastMessage = savedLastMessage ? savedLastMessage : null; - - let savedLocation = JSON.parse(localStorage.getItem('location')); - this.location = savedLocation ? savedLocation : null; - - this.scrollDown(); - }, - updateStorage() { - localStorage.setItem('name', this.name); - localStorage.setItem('username', this.username); - localStorage.setItem('activeTheme', this.activeTheme); - localStorage.setItem('messages', JSON.stringify(this.messages)); - localStorage.setItem('answers', JSON.stringify(this.reactions)); - localStorage.setItem('todos', JSON.stringify(this.todos)); - localStorage.setItem('lastMessage', JSON.stringify(this.lastMessage)); - localStorage.setItem('location', JSON.stringify(this.location)); - }, - clearStorage() { - localStorage.clear(); - location.reload(); - }, - - // Utility - scrollDown() { - $('#chat-box').stop().animate({ - scrollTop: ($('#chat-box')[0].scrollHeight * 10) - }, 800); - }, - startTyping() { - this.isTyping = true; - }, - stopTyping() { - this.scrollDown(); - this.isTyping = false; - }, - oneOf(answers) { - let amountOfAnswers = answers.length; - let randomIndex = Math.floor(Math.random() * (amountOfAnswers)); - - return this.convertWildcards(answers[randomIndex]); - }, - convertWildcards(message) { - message = message.replace('$name$', this.username); - message = message.replace('$botname$', this.name); - - return message; - }, - cleanupMessage(message) { - message = message.toLowerCase(); - return message.replace('?', '') - .replace('!', '') - .replace('.', '') - .replace(',', '') - .replace('-', '') - .replace('_', '') - .replace('#', '') - .replace('\'', '') - .replace('"', '') - .replace('+', '') - .replace('*', '') - .replace('ยง', '') - .replace('$', '') - .replace('%', '') - .replace('&', '') - .replace('/', '') - .replace('(', '') - .replace(')', '') - .replace('=', '') - .replace('\\', '') - .replace('@', '') - .replace('~', '') - .replace('โ€ฆ', ''); - }, - clearChat() { - this.messages = []; - this.botMessage(this.oneOf([ - 'Chat cleared.', - 'Evidence destroyed.', - 'Mind cleared.', - 'Uhm.. i think forgot everything we ever talked about.. oops.', - 'A fresh start!', - "You've got something to hide? Nevermind, gotcha fam. Chat is cleared now. ๐Ÿฑโ€๐Ÿ‘ค" - ])); - - this.updateStorage(); - }, - includesOneOf(keywords, wordsToSearch) { - let lowerCasedKeywords = []; - keywords.forEach((keyword) => { - lowerCasedKeywords.push(keyword.toLowerCase()); - }); - let includes = false; - - wordsToSearch.forEach((searchWord) => { - if (lowerCasedKeywords.includes(searchWord)) { - includes = true; - } - }); - - return includes; - }, - includesAllOf(keywords, wordsToSearch) { - let lowerCasedKeywords = []; - keywords.forEach((keyword) => { - lowerCasedKeywords.push(keyword.toLowerCase()); - }); - - let includesAllkeywords = true; - - wordsToSearch.forEach((searchWord) => { - if (!lowerCasedKeywords.includes(searchWord)) { - includesAllkeywords = false; - } - }); - - return includesAllkeywords; - }, - - // Ajax calls for saving/receiving reactions, documentation & themes - getBootswatchThemes() { - let Kara = this; - - axios.get('https://bootswatch.com/api/4.json') - .then(function (response) { - Kara.themes = response.data.themes; - }) - .catch(function (error) { - console.log(error); - }) - }, - getReactions() { - let Kara = this; - - axios.get('/reactions/get').then((response) => { - Kara.reactions = []; - - response.data.forEach((reaction) => { - Kara.reactions.push(JSON.parse(reaction.reaction)); - }); - }).catch((error) => { - console.log(error); - }); - }, - getDocumentation() { - let Kara = this; - - axios.get('/api/kara/documentation').then((response) => { - Kara.documentation = response.data; - }).catch((error) => { - console.log(error); - }); - }, - - // Levenshtein distance - isSimilar(message1, message2) { - let longer = message1; - let shorter = message2; - - if (message1.length < message2.length) { - longer = message2; - shorter = message1; - } - - const longerLength = longer.length; - if (longerLength === 0) { - return 1.0; - } - - let similarity = (longerLength - this.editDistance(longer, shorter)) / parseFloat(longerLength); - - return similarity > 0.65; - }, - - editDistance: function (message1, message2) { - message1 = message1.toLowerCase(); - message2 = message2.toLowerCase(); - - let costs = []; - for (let i = 0; i <= message1.length; i++) { - let lastValue = i; - for (let j = 0; j <= message2.length; j++) { - if (i === 0) - costs[j] = j; - else { - if (j > 0) { - let newValue = costs[j - 1]; - if (message1.charAt(i - 1) !== message2.charAt(j - 1)) - newValue = Math.min(Math.min(newValue, lastValue), - costs[j]) + 1; - costs[j - 1] = lastValue; - lastValue = newValue; - } - } - } - if (i > 0) { - costs[message2.length] = lastValue; - } - } - - return costs[message2.length]; - }, - - // Speech - say(message) { - var speech = new SpeechSynthesisUtterance(); - - // Set the text and voice attributes. - speech.text = message; - speech.volume = 1; - speech.rate = 1; - speech.pitch = 1; - - window.speechSynthesis.speak(speech); - }, - } -}) \ No newline at end of file diff --git a/css/lightbox.min.css b/css/lightbox.min.css deleted file mode 100644 index f0f1d1b..0000000 --- a/css/lightbox.min.css +++ /dev/null @@ -1 +0,0 @@ -.lb-loader,.lightbox{text-align:center;line-height:0;position:absolute;left:0}body.lb-disable-scrolling{overflow:hidden}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;filter:alpha(Opacity=80);opacity:.8;display:none}.lightbox{width:100%;z-index:10000;font-weight:400;outline:0}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid #fff}.lightbox a img{border:none}.lb-outerContainer{position:relative;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:#fff}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-loader{top:43%;height:25%;width:100%}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/loading.gif) no-repeat}.lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:0;background-image:url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)}.lb-next,.lb-prev{height:100%;cursor:pointer;display:block}.lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/prev.png) left 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-prev:hover{filter:alpha(Opacity=100);opacity:1}.lb-nav a.lb-next{width:64%;right:0;float:right;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/next.png) right 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-next:hover{filter:alpha(Opacity=100);opacity:1}.lb-dataContainer{margin:0 auto;padding-top:5px;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.lb-dataContainer:after{content:"";display:table;clear:both}.lb-data{padding:0 4px;color:#ccc}.lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em}.lb-data .lb-caption{font-size:13px;font-weight:700;line-height:1em}.lb-data .lb-caption a{color:#4ae}.lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999}.lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/close.png) top right no-repeat;text-align:right;outline:0;filter:alpha(Opacity=70);opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.lb-data .lb-close:hover{cursor:pointer;filter:alpha(Opacity=100);opacity:1} \ No newline at end of file diff --git a/documentation.md b/documentation.md deleted file mode 100644 index 075c794..0000000 --- a/documentation.md +++ /dev/null @@ -1,95 +0,0 @@ -#### Commands - - -##### ```/clear``` -Clears the chat. - -##### ```/say``` -Repeats your message. - -##### ```/todo``` -Adds a new todo to the list. Todos can be viewed, checked and cleared by clicking on the clipboard-icon (only visible once you have a least one todo) in the upper right. - -##### ```/weather``` -Tells you the weather in your location.\ -Your location can be set in the settings.\ -\ -Can be triggered by messages like: -- _How is the weather?_ - -##### ```/joke``` -Tells a joke with an opener and a delayed punchline.\ -Categories are: general (default), knock-knock, programming -\ -Can be triggered by messages like: -- _Tell me a joke_ -- _Tell me a knock knock joke_ -- _Tell me a programming joke_ - -##### ```/meme``` -Sends a random meme from reddit.\ -You can pass a subreddit of your choice (Yes, NSFW too..) -\ -Some predefined meme-categories can be triggerd by: -- _Send me a coding meme_ -- _Send me a dank meme_ -- _Send me a birb meme_ - - -##### ```/me``` -Sends a classical "_User farted_" message. - -##### ```/lyrics``` -Fetch lyrics for songs.\ -Usage: ```/lyrics songname```\ -(you can also search for things like ```songname artist```) - -##### ```/quiz``` -Get a quiz-question and guess the answer.\ -You can always give up by typing "i give up". - -##### ```/jeopardy``` -The opposite of ```/quiz```.\ -Guess the right question to the given answer. - -##### ```/dice``` -Roll the dice! - -##### Animal images & facts -There are a number of commands to receive random animal images & facts. - -Animals:\ -_birb, dog, cat, fox, panda, red_panda & koala_ - -To get a fact or an image, use: -```/youranimalImg``` or ```/youranimalFact``` - - - ---- - -#### Experimental - -##### ```/talk``` -Activate talking. Kara will now talk to you.\ -The voice-language heavily depends on the device used. - ---- - -#### Planned features - -- Timetracking for work with unlimited trackers -- Wikipedia lookup -- News integration -- Multilanguage (English, German) -- More natural conversations -- Chrome Extension (_WIP_) -- YouTube integration -- more fun stuff & games -- maybe some quick image-converting & editing in the future. - ---- - -#### Found a bug? - -Eat it! Or open an [issue](https://git.luna-development.net/neroignis/kara) ๐Ÿž \ No newline at end of file diff --git a/images/close.png b/images/close.png deleted file mode 100644 index 20baa1db5fdf9e22655a0f851c4401d36b9e7ef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i3?z4Pv7`ejn*g5>*Z=?j1DSvS{%vY%YG`Nx zvLV3R+Z)1I1qQoz?eg;S^6>Bg3hv&$d*{xbK#iaC4$A=f!X-g|!3vbDHnnh5Xg#OL;K8su!;fw4MC7hH<+BPou~5EnOggc)I$z JtaD0e0ssdsYEA$E diff --git a/images/loading.gif b/images/loading.gif deleted file mode 100644 index 5087c2a644223a95984baefdb74f39a287fdfd9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8476 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 diff --git a/img/2.png b/img/2.png deleted file mode 100644 index 2e2016ebff2cf3c3b51c0abc533f0a96184c5298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmV+}1kwA6P)L{QP9Q-Hz#Ghr@wwHk;#@Gaiov{eZ8&A(ZxjIKO;gBd7&| zSg+U21OpuO6@8ZZgkj_Y854{YHq>f0>4~e=ikWH{Rx;n7=J zC5F5s8b%Z)$6P|gg?9&u3k)*&!h-_e-3a+eP*RCI3_lcJln@6Y5R-GpB{}5;2qr4$ z^NP3|d{mAQB%rt(d{hF08K0`n=X2I*G*~8+IceC2eY%@}jv@r2nmaK4eRz0a_xJbQ zhJ83jXM?YSK=%8+Qe-?nJ_=z_!!bHX3Vf9UK?tcBhC~nyYB<(}VZ#N2haweACX>oQ zaIDUT2o?gt{aM9SVNf$+PQnF(N9S7u0-uFIROcVEyNhW|B&4x~U--|b$@qNqBM zzS~uO`+qHq;w8KE?f)$Tfrvo}ME7#cD5?&qJd+Cq)yq0t6jcX-MRz)vbBA4Z;4kwQ z0?|E>gjsb!`9lgswG#2#krGDLfl}e_tvuvGZKYi6{+04>Q|(-O<^h4$?AGKV{*rDU zkfU1rT$YMkuu7S?X~t7k!FNxHNSeEDxBCw@3>~N&<6`iICozNXE|9jT%8a`R5k80{ ztMJ_wAwC}$Js?#T{;?v0V)C5_PqZRMCVVF8ySEkqEq)LrWX8PTBrwQ<=TfrsMw0iV zBGb1b#NAhzH3i(H#VWBXv)m=>I8~ph4KHy08EeFQ&lgMAQo)h#Ia0!B{D<}w^u|3N!z6`{0pj(+B@b8s*D{Nzm!*+LA1C_)O^GY z1eV`PXS3OFJiq?}yQ+7`F22F#0000jbVXQnQ*UN;cVTj60AhJAVr*}3WMp|RV{&KQKGBibQV{c?-a;OG>?f?J)07*qoM6N<$f;434-2eap diff --git a/img/3.png b/img/3.png deleted file mode 100644 index 1e099590921f7698f68bc3d6ad1862806c1684b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmV-h1f=_kP)8+_5XX6gdxU$0Ji>`S(zSFn=|h(yN-jVXs!-5}f-c1=T{&X#9wMp`8?cD(arcD*~^|7J1@yS=^rUMv>#4-XH|&d(;5a=9#QDo&mM zP~A(V(r@SI_1)dwMaI;elYihs+Z;ay)cyVaPb~~58lLZU$hbmLWe$VwOWDya6BH1`Ft)uKR*R0+wFE@y&R-e44-i~{}@FH#I*0g@b~ia zQe?APX~AbWhqJ-gKp@-g)+jQruCA0YsNfvVkpf?}KoCMEh9(gNg9^^Iq1i}*U{Yja zxm?Z|2+rkfh+riUJfBU>6b2O=#w1c8m^!Bo2z*uoF&%&Co-VdE85)oL7m&xt$Ha81 zp#VWgWD+IZqa!pRux_`j9gE;IoRbL7L?+-AyWAl!g(OC7`xgj?!>#bcLK>VU<-j8p1> z)zFfk)NI|DfbNgt3fQwP=q2|IOQHIOJ$2UY`#B6XkzV)|}3E{h^{pnbP%`u0CA zi(;m%efytAAP_MqfpA}r8Aa-VmS;+VVD&O*iz0Opxaf}aa_+EG2mWQ=N+8_(kuXyS z)PHD!n65;OJ5s_(9T+X#P0J(?YAfTl?q6BnZL1wi&paT|nx#!1;$PA&1LCT+k7cQN z1e+}Lw#{U!D){aR5lM5`ZnyuThNc5`V^R#h$RuX)eGjDRsWOu;LWB=0$trx`ix8jO zO%F&_g~W;qip@_R%xG1LO!!RFcW*BM+Wa6$$c%BnO<>Rm9!trN3rXHxMW$~@h>NdC z-Ek98=h(lHqB{tLMCzVD(En3kf&yW$>Ba)+crgSX+7!XG-Xvbu?hxUJ z0{J&C!gdq3ZIPiWc)TJiNZPK2;one&)ZPi-P-W!6_+`A)45DSfMNKbZAh7+;_07%A zH<{mm0f8WRE=Z<5{r~^~Ep$a#bW?9;ba!ELWdLG%E@EtNZ)9Y7E@N_eaCC1jX>DO= hWiC)oM=~@;Zewp`Wpbznf9?PP002ovPDHLkV1mwn`ab{w diff --git a/img/4.png b/img/4.png deleted file mode 100644 index b9be3c4f0caf0e2eb97021079cdd2c00b769064b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcmV-H1it%;P)22g5XX6gdxU$0Ji>`S(zSFn^rTA>!9i%C3Pt)*q)QRe(NWPMT|tE?NS7{re#KjGl~B-h=)+E@6Z;RxaE{KFqT4TGjRb-w#4$9@xJpsMxwR~eN%*BPi4+K4ozD#jVpam-jz6NZ ze3D%z3BNQR`6nRNYW2S))g=6C0fI!txm!A0M^b*Z0D%n#gUB%fKEpY>O}AfdK{_${&$HxGNFqj+s3B&sw;9E-!gdTd~)= ze`R^Msdgwm3xGgtc5d>J@RDvB5MQl*C`-j7n6u2=G?S^S5PKj*B+Xs7+x?3gx(?Kh zwisfONz4%Y4oEvtW!f%6L<}m)Dq`P>5byj=4@gyoFIH4gOn&mG0GDAB;Tzp094kw^~iur{U-Ekl!Qupkh{-1IQ3WUAf zjRlZ+F$6{>lHLG8Rp6U8Mc~$(#LJO8M1-M0{*8;U-GpgdWT*-ruV@t{ZI6Tz-cW_q z-j;8uGV);jV(&DA*0S58W@s4*Y`>GgzP|n@i~A2omUxxFUOF%U001p?MObuGZ)S9N zVRB^vVtFoNY;SL5WO*)Qa(QrcZ!T$VVP|D7P)Z)9b1s0M%T00000NkvXX Hu0mjfSF`;k diff --git a/img/5.png b/img/5.png deleted file mode 100644 index c25c5752e819457ddc0471de9d482e15f53ac5cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmV-$1dscPP)`b_nf-?W1 zvY(!w{tkW~H5!e*5?6xEKk%SyhJOas@$vD`R2V^RxJW+K>-EI-^|iRYy^YiJ^RrXw z?(Qxw`(Q8-{eEAxTCLbdv;Y;1%Or@$$49o(x3@R({{Ake(`lTR%Vn-9sSEmFUtihf zeR_HdU$hbmst(<}xw*;whc7QLVltVC)oLYdlFeo#7K=sraz>+3rX8>~(S(j-Ai*CG zxCm-lAm;PAa6teEWks3OY(g`NfQ$%61sB@wcItz(*-W@9XjW;q!S)DBCH5UxS69-^ zsCu?Fjn4@Dj;a|^EeU-IH5b_z#1|MOutf$1wnsJOp+ru_cNj@1vRXnMlt5he8K3bf zTR_lJ+3i>OF0heZL*RgX7ud)Gf*v1N#^bT*cDtflt!^b;!@ayjm)>L_MG1uKJJ9{z z-`^MIa#@;i4|#NpPQ9=-6UchKX1$@q!$W1EC?Su|nxb1TY)u7%D#Q^~&8$LELS9{x zhhAznQXm)(C3)zjK8X|vhR$CN2y9jY;r2h$ zynLQbCJ(*TANemJ=jZ1}oN69=wE%%5;=C=LwIeURT7W?A@9$Il1h|Jhx<$8MZ9wRa zbvm7`w}#(wE$^Z|H*CMN+4W6;=}4c`Hxf}+?|Lfhw!@evNrC1l|de&t=N0rKeD~sRoM+a zi-924?5l-`B)4?SfP~T7yJ4yL1ar1|yC$-zD%c(eB2vuVa5(&j8k!EG8+{SjA`3Bt z?Gcbc9F^&N5F%_)g{;E%Ch<@eq!iaP5c;Rl?^LwSq$1Q(+_zRH0~Z&ks}? z1u%ZGPntn(iH@jw@C*cw-#Mz)YTsmb{{;*Tc>Gkif~x=k04;PySaefwW^{L9a%BKw zc`jmXZ*OE|c`jped2n=ZE@^FHXJsx>PDe5{MQ&qnWMy)w27m4V00001#o5atc?2zdlQLPU?0mX5}~=_n8c?8a1fL2n8=ipZTiDmtVTREPq1?u>1W`Pb&Y z)6MB1yLV%-9pdR=e{)yQEiFS0YX7jrkXi z{qpkir}ueLsZ`D~T=6dch8xr7_#r@5tJUwZV0h7R6TPY3Zi|P92Qe57LVbRIPL&Ra z!*J}~ZdY_V9noksLLV^$RAAgifp~m;WE*{ZdlT>P@8aX*Bh=MuWmKcKVE^^?l|A04 zrzihGD?vf%(8*q}m-q)?US7m(HWTahS{##Xw_CAXF8zlynM@M>fUl7$bP)pL{W8Wu zpq2#0VzCfu5P*ZRV$5+qVHyR1ObCnu4&2_}#@;xe&qZ1V(<;t4_#S{#2y@5%{k`;J zgx;}DjY9-^M>UNoO8i_x(?#|Mu>}kg_#y)Zz6TL9&QMaZ9gHX_vM3=Olz^l;XB?7K zb^yUbWq(~^yTC_wgdhRgF7S~B2v&StnNFvo)oO`ivACl+hI6Jwm)+u%6KQ`MGjXq_{?Br0BK_UtChXFhL<$H>=Tid&J}Uv?u0P_k zyvZqJ!Y-{x{tA%m>+AoLR882`0tgZj=V|GT4pVlu00J3}MzL!GoWnJ`MYmmTfY1|b zHk&(74L{?U>7~0ayIKLUsmODHI6(eU4oP$QuN4p*%73lv5F5&WZGhNR{%Zlmrt)74 zAU0LI4iFQ7xbokX|E~OZ<-aTcU2*3Cae%n;-IFw zKztH|5)kfoOqR@tYXg@Ax-c53vH=$397AU<1rpO%VOFlU>0+C;{xg6|;_ zkvMn#e*X{DFm=Fgv_;^HjA91g13{5-OgBJKDQr_y1n#(ryd2vhA_@xV-?$0wCeqd-L#24V zA}Wa59t%dap$f6REpMnY@xb`O?lgmF30l;QEdv7WcP>h$(ifTEzX8#6d1FVa`?vrA z04;PySaefwW^{L9a%BKwc`jmXZ*OE|c`jped2n=ZE@^FHXJsx>PDe5{MQ&qnWMy)w S27m4V0000>9#FA)G}sPL1KYlSuZglr?JA_)LA#Q%8K zNP*weepS#^0RSR#0DxHd@d|$^SONg>_W=NoVgLY+`>}zp2oXGEXhHL&w_?xijm5u~e~Yw44GNYwX)Rlv6J51@rjs9ts*A$pZO>uH1LHTy z{p3nx+veY1(#GaR0uUj;6uieYd>_*i=9_by?G6-?YRW$Z%Cu25q?! z;G?)xrE{#$tz=0)>{^yOBO~?$nAkE$ZDx&UG-orrC;`M5F9tl@D>JgPEgzd({(St% z%kx^P4)eHiQd(P;^(A|3x52G}#hlf>%#Z`j{zZRpx{3KvixD*W0Wh-uY%wbU2r8*? zqFMxY;HZdjMk7jg#5K6+>Zapm^z-18+~T~dMFI=!dTbcP&J(Vuj0LYgoBs^rsHI^0 zz^F1(Zd1Z*K-saCANff02I@hLDw*Sro!?I&8x~y_JFbk|oISjc(Pk?ml<|9LEqKikW2D@Lm8H27C@N{Ro*0TLvRdzHY5BTWMf9$g^G!bY);1` z6TC}Dq(Cqe`HvRW5~p3VM;(_CeNYM=7YAR;XUe*Q^nGY$p>G8lgjxtaH?meDbjtV} zR#rqnUxA9{EHt#6u5o zgK+W4i++;6!x})jk}pd14oj$(|CxwUf?zA#ktDXu#PjnXt&;{RA&RU#S&_X)UWGa# zW;1FtwN6N-9F?3$fv*O?#@7miIr)!dHBk%ls|DRtc!$XD#2vWC!H!a`#hgV>#mrN6 z+@x4atBDSl;c%gENcN8P&J>XQp`1*2lw_nZ%|K`S z<_PzQ@`&SzG4u1nJK^Nw5yWe3SKcSYC%mUPWZ6E2KIM=P4U$E2MbZ`u+wBY{np!i8 zuFaOUmf^eTqbJF{n%=A*SV>sR=6rvX|4z}Q*L0g9wAHc=JkmbGKcb(}D=D|E=lR0p z$YY<0m>J4LVmZW$CY!r0Wv;=eMGk+EKpRUZ`&d?`h*%3)jIC~CWo4N$8Zl};zA%!P zPE|_x@k18Lhj3jbVO5Hi_ip0`-)2*Vuf11adtEJVYvdRgZ-Q{R($E>KVwK^gdOLYR}CDpry zskPdr?vl20nPsOHIVDE5KjeJAgcn)V_35zc307UFawvNhl~1u9b>AB3$m*!+6n^hM z4mu9WYWY&}rRPibinK?FkhG{tw^6sezpk`wzZ$(-vFuJBlSxWpW<|SRlbV}}vLTz1 zU6pS6LTXD+ONM8yXUshkRbzbUBzZ1su3-nMafD;zx!5{|Z+%|4Ns&q1hKIjCSTny0 zs1`T{a4>WD%lnOsl$(J}h|HS2g*2XQI`&80b(~OK9)%sLJlO@$IWP2^g?X~Y%r{rC z_R!qwNARE3TQ6Qw-gJYw1U>%!yy)1HVyMd!`q>yX^h~; zdDj)C{`U)&3*W;et&q8tNHc1t7bX`ds?`jD%?*F>mMB}FCKjgnmhYp^=3LMAa`xiJ zhtK9te|g?{7T>!+>pvsi7h_jqe~v_r9F9MZw;yI2R%A9VXDBaL1?8&bJWZZW-f-}7 zoES~EzpJILm90f`NT7`!g=X_@p=}=n!?s6xco}X#6?@r zbg7tVt8Suh%Ec(a^r&!of_soSllWXHRM6Xk)o_>SmZ zdy=unQbm15Sw(xABiloDPE<=2M=Z5TY4>}-`LubADlOgo_@r3#p`0k$;fP`CXn)YH z4IkIRcGvdz9cu%Q>h5YAdwEYmzpSsrtUI5FRtGZ%)fkr;PgQ@Zx+_#G=#ZAc*h^M_^l+! zs(3n(wWmSaKy~>xS%Gxhe1nuHCN}mHnHG0G&Q5W8P8+{T%UZwlRyz$l13SNK?Hj(m zxEi-FdO+$gG_5^0p^%7>w*(ZTeAF8=q=(ANW{nSprP^-nT>Ij`-8SKUVO7Ukm0M-C?T# zR5vEKjIlehGZZuS(&H}fSJyREIXT}4HZxm;(tcVIdHA9Gh5N~~`LlIaeysG=?XFX; z?lImmn$@k+@9g#rpz#Aw1q{E|cqn-cdR$;T1y%e_O&X~+0cvM0WnvEN1GFMrg-%V`m#arz&=oJ%>#PJUG9^2@)-TNu|xfIi1)!&A5 z)mY49aDQyHDz++jk-g62*6_9!W_hLc9JD7f>``@M%wO%~j>ADC!n@1m4lO&GP;TvV zH16!)zTb2{yv$8HOqv!x71r|7I`3)A@NwFL4!t>iBa2f?tt+DWWA3u)9OO`(UR*wG zGz_76Bi35GoMbJdV9ul{BdP6ea<=}ajY_AT-&tE*0$HXF zu_y|K^(RY(S+B3o?t57jc5O*Qgwl!%GkIA;*~*|07TQ7A3$LUs>ktGfbj8@PO7{{L zZ(EFI@H54A#3+|dzJGGcZfbMhL4LQ}eOBftyA9Z?ZYHA=nON!Uk;q;w@1*yNRfh5X zEf@xU08#Qgu4$4OIrm=AmZ=y%s|7-4vyoO!Jmz)sfwwctIGvB%F={y9(7dW0WWDTr%N#$9fw{nwJBwv zGq3yGCJ|hq2?HK{xnlkhq3QTN*yFG`N6m+o5{DIm^7hhH&9RVFL#J+!%#%7G)JO8~ zr_g^CpYud~PLw&?ErHPl%useT->qNVU#)Y!Hhf?mmwlMR2l;^k%u!2E7cl6>q*LJY z>ZDV^P4;A6;OmLcrqkvF`1RaN$M}-!`k`fqviN-2Cg0eYt#&=yPMmzPhl3DL_Uh&v zn53wNCibEZoAGv=jMusvAHzITuvJTmwbY$WGCi%f`+j8+IT*@@)}p4rUEKf9l$02< zLc0OP6YcSW9t1+m-`V4fj-Fmz!k}Q7A2j6cc%(etUwghDxl(o%QkXzM6sw7hDr)Clz7OK$tKS8XudpxNK1ADo*+kAkPw6_1{|N;BWPvZ&7ubsq&|3 zj*YOkuDOn5T2JP*gTl}Wprn1UzenZy(7L~0$@G}H3*r>$(eL~`E+7)7hbihII5JDT zR*>7HeBe&Ju!%_dGrSj%sr8p?Nn}8{#pnUA$JoTF7S4*IA`QAG$!u~o+J_tle$mX0 z&P7qgc;(yEVyo>#2VAO=6BI;hkPVX7$z*Xy-b0d z&uEA{BaEHM8+@ohVJ^d5yNHfc>^3b+(vVEF%nBHOIo1Onznt2LpHTYjCgolP!k%;g zv$@>Y2QcvFNG-6V>1I;cOYFWO!J}o_I(u?I+iBxz3nx&Y_055k-LQI)-`F&&KZXAf zt+k727w~EtS7GX)Zph<_T8_X~BJPxO$R#YYAW9r)snkc{o_~<*Wg>ftMlZC5=+$?v z6S(s(-?tggi{aI~ZUHLdyV0zoYCoe8a2m^``Zf~`&d#=jmDYBNb z-@4AK@OLwZod-%iI%4ubg`_*E`H z@M$8Kq-zr;H%<4;@1~dQaj(3)Y8#I{=xsSj`qbnyIisuO8sCU*b;^EGUA`N%LncD3 zv=x6?=l0)6_F{f9amPhBztmQ{<9HlYJwZSXKfGU`29YK7XPYHjz%C;UXslx z>wmxOq}m<%9ajDvkY+{)u#~25jD1=(YVyUk>clOIu_~B|ya>NU_b|{4%P82Hgs*(V z&-TEV9U8sSHa#F@KG#NMhpZ-y>N6Ty&s~j^N1teI;}Lz_i^CL5FqQN*P}W;-)im(+ zjx!bte|OLL>2gy(#ntOD2=0roEL_vW{Fa$4RTz#CjySt-XC_M&Qz~IJKQ4Q7KeVnj zHr=n-f%MkIfZkh}rb~j*#~tCVLG3eVaR&#Q-BK3r~i0CKWI~LW%WHoP%S&Iu_o%b);HoA$l*6Ojua(20H5)zJJ>py8{Ken3j3RD+IUeTyHf_lu8jx)jn+TFb4% z#OSlS_Wi8AA{u3~-+MpVYQ6j6J_@u+Jbqfvbt@YX$jpEr!t<2u3kAX>s;9|q5lM5h zGcA{h&B8{E>C5({?@7&~&+{sHW7(l~T?h=lZxxoO@pos;DXbSVeHzn)P;pOD7h_pK zrJzuaz;h7paohUs1a`qs%?`aqfnqJB^iie0&X)=7MwbpYxF6b@2(txZ3{UEb=23@y5N$>PHH zJ%~mmR4{Mz?7y^u4oB?KjEs*GopG%L_VbM&y2TuUg+D96BXRVfh?c9G;9lzYB5XYo zRem$)Bh#C#MeSLi50iA?qOkkWxa_~}29<9?R(h{5dY;c~4ytzqK|ZRbGCZr`uKW;a zQey#3LZ39SlRdBZO>u%USv+GkRMT7$2a^Xz-*o4nBqpgCbtP@9o&R6z&|F|0P`2&( zXId`z^?tQ3%PS!#*){6C3qPtl&JJJTOz9C=D6=6M*dLi1PC(RXRP7=+$`4ne}Q4O3!}6;35{2jnfLPC-B&&V?FJD*g(pw@9#EsXr33! ze;i=0)Idpb!d;#NGuW80)!9_2Iu=5+8K`3>8(WRb*)^C3c{#`A_XLElYQr;0v<WcFRtj|v9Y_M!)us2q7bR%4ypKBBkVy>M{EJ1G1@lzIof&WdgUK~K3%N67ERvRXDfVy9P9LRlJ2#ER6Qek~PI@6kav&R|e)9m^88-OSK@@r&%ONR#< z#hjOs1|Wv|?m%_F56Mp;^>5OZy^=vHBl{!oJ5LymmJc2mjp{0ra*@KM0l6KhOF&ky zejs8q7PbCxe{|GXtLI+?a}WHP(>H!ZhJH#hNad0*h`uGN;>WP!|!qroCuqe#;K_m-;?$ErMtHF zrwLtYfax9C7m3#ZOk&Y%vP5(ckLC6;7vag!&3h~JwE906kFOVjfp5Kfo+R+8u`pSu zhk5dUT#xF!P)9z*yyaUeSZReUrCIvtA zJm~Bmh>dM(S#-? z%g%wkZr;E9JT4Afzz(hnSn??FPIsIVA(trJ{V0gd$D;m&eRN z7_)Mnt`pcr*v7B#c}lG9^Q_XCD-89Bvv{~f9%l2Qe{LExx~oC4Vx`Ulc=FoPG1bDd zQU-Hr36#N#@+s}%gG%X8DK93T;>KJ|$;SJh^e_8^#e zmX@Ja1pUi}d-{r3$@NeU6#qLdyTHq3KihcLc|aa#O%HNDW2eI~Qb^z~JejKWOW_{ERvKW>Vfcg<=*bkXE+ zBX4C--ZHN)nOr@``EH!AP$~SgkEhHshkI0jzEF7ZB+(J0Pc!Phlo%s;!eZnS-rY|8 zUyo~W%L{M*YVt%&*EGjT3j~AI z!M=+U#}0N9Ur6{5`;Dyhck^FQt+5^ogP&B>aCgUUG zi9E^?{SqQP0WXgiVZ%@Vyj%V&DktkuSZNOB0wK8ul1 z{m$VB^&e+vI4zj2UYR8)I3u&3986I=SnY{FjjBz$#i|3I3<9VDgR|rDQuuL%k<(!< z&zz*x731Wz2#i+z8FAvIW>xX)VDGx#3-~KH@YJ5;zsx|t(4^2* zTT}%WG9@$4MjFtM+w{Yraw9nGL4y?nhq1U9jikpXy~t<| zThLb8N8|Ujm>IDe<3GwYSAb}hyjl^4~u`L*06qa zs?{>Y-X~t=(eFL9*B9G|`XHhHvKP$e}7Q{M9-oW27xvO`sDk5+`TEF@&U%;r1_ zRI^!v4Ai*BMoh331CvDRRE;j{lC@gaXFW3ubi!kpwlME#NZ&iO9 zZ~fZ{9L7&RgoCd%KMvJE+Nwh~_@eoYPS`&l_<>142sb9=^Ys_ET0g^)QNQiwgdTj3 zDa`-s20M3!qGf|jky!)lwLx=Zb2PQJIA_HGoH@&^3;zp0r=Ipc75;VYv(`g?YHB2zG8QW(TITX*<0_Jpu9Sq!dq*_-Mo$sgw9ceB?1gMO zdYSG{^?IspYv?fh%7Y@2#-$B368h5P7sYho?q^Vb2arNCkBFR!N%wlY12IAUBA$UF znJQ&{Iid47#NRW0q0UHJo60s74<%HW6h3xkz>?M-NW)Bi?1pEE!d~khdIxaa$naoN z_@Ww`-*(orx*y=nidj(%UH1YTzpmdpgN8js*f0t|IL*I3W^$%&bC!npPOAtBlyp0; zYUi1!YHplVo{{V7I)i1Ege(_;Oa$`EX0S{U|0$P~wSw?^@$FaEHc#Tc^6Z&zbzQFd z{J+xK+J|Lta4GY7pIcTPI~TqNbxzos5g8>g)wPyV7$G%;V>RC2-F(@uI52zo18FKl3r6ArCVOWlsLM=qrT%GTL0kt6^z_mV&`N_6`-+DQOk>U zn&g` zj#NTM7^04!$zI)BO!7^b6Ddm=iA;`=*izu#)!fN8jWatNkN6pR94&wHk5ulegfPW1 zCJhq4>#WqE3lZgZgfj--?)M1Slt!6CUrV}vFj!=jhUAFHN8VMuS?F>x>xLt#knc_} zCQRerUewq0Kd}k;NNa6Z(^|19oLw6XoE?rX3jg$SvkUjyaZoq9M7d>4Z@zS470Pw1 zn$|l7InyOLbb9s@TvFnGZi{p$l=!m4BuGMZ4G~F%!)C2KN}jF@3o@(Sb6d-As4>Z& z4Z^tkVWlOKa}Tbd#O7u69(wWXFQzo}&nPiM9>;TI$HI9OpzDWLV4kr@d(`siazt?7 zCsF+qv~<&eC!bonhjkJ z5kt{2$g59(Zq)=>F7$%hCWXxbM>-rP(%(Lj<}n&=9-xp}E5};ub_Fz5^YfFLLz-SJ z&T3j#DjO@~Ww{P^Ck<;BJ+aW3u~4A!#QgU$PJ~}vg)Zb134Z3Fjm*0X9Ya4V1TK_c z&mhc-2d&#mwQ;!1j6P>uvANQde=l(+9+3}=tGcTbwY$3-5= zRPiy$LEOC4Oz5uC_~S!!wG&OQRqE3)Lx-k zBVZS10Un3@)8+B-SgbmHnMb+@YJ+V4QyB8PI(ZfKd}p72=cEMgfR~9QQ1qo!h431K zOFE1!WNx*dwjj!L&1Kl9Ru(<_AxZ24WE5-y7XNlv*cEZ}z)V~G7J@VqWRuzS7{T)- zDJDU|$gJ{dDEy<;tLRRbO(V7Wz!e>RfBC;0LANSzeH@0PEdDA2EUqI>bG8U5R< zKR44wu7K_LCwHsINaN%E04h@;Gz8G#12A-K-xFDEnvP_kN7?i}zC!giKmy1jxJTM> zUVPmUL*bf(k8+?uJqRns@L{$Jkyg34RK9Q1pMBTzFvIyZpCS(WRit{^hyIS@hPM6H z@$>#F-Fp43s;~!q<~o#YaRIz1Z9(ho;t6yg>QCM>6E589bf%nZ4yBTw3U zkkwlqhK}of6wwj#Vox!-KcZwx`}fNtNVLrFG7N>{AMObrT(l9kT?fCRCcStY_mNlF`-Ic)_v`)NlmITDgsf=rvV8a<;V79`$67w zF`el9{~?l;A%Sd-E$dOhY`=>;1C4GreHZ=-!zqI(<|^oPLV$bTvX=)fEa3S}Z-P|< z8ZOB&D&ug?Q~+uA0hA%!05qrHGQ2U%pmzfdv|$#n_v0<&R0DHx_{oFY<{TI(j;B1O zLq#$n422NUhj2l;yA5SHSeQ%4DP0$4?K=bq(4A3x7ndM$Pw|P=MQ63z7pM!j{~<#{ z7*Dxs_6{n6tybMMFPm?w_JFng<^8BsaCub(w-?y|pZ@yNalphh zmTNJ{0J@dp2+_+9hX}lJms$AroS(h9#R5U3`wy1+s!aeL3B5 z&t9c%a)K~~2c!LU^X{kEnEFCN03GT;ntv*){BLB1Y9jAkF>OvNz!r z;C4sBDfwJ;YFD*L(xpFuzxNq8&T}OFra~V^scJ_*?<}=W_m=Wu z-64XysIMJHm%8?2HZi*jK~LX2{5y6CxS2WS*Sa?DLszi1jk2Qj&EdGLKL7Lh)s>oc%7M;E34<&aa48?dBP(`q2WXt z9z;8|+i7qa_Lg_fgL?QKAKQwG%aSmN^ts6Wm7q4G3Bl?$+u;V478pG{SHATo87)RUYywf%dKR6V>DgA_K4o8Pij@Ml?dJYzNllZZu`ligwA z1hed8wt9(amXha3TB~tOvW9DgI{*v7rxE4O@;_?(kxWAu>&c*vQK5q@I4>pW7bgGT z5VwhmaU-Hw7#~5q* z?e2LGyd0}48xvYUBDwI$=Cf<2)cX=u&_rC)PfS>Q7SKIdeny4d2l)BnyEXC!E1>;pKO5}1pJ^jjSvWD|t8Z}wFQ0a5 z`i$N@EO2GsAvosT@#7RwaCaG#WTMHvcEnJu)ETEEv^E=3wZA3);6}CXN~t1H$L{iF zVE<13J&TXORnejX4eG}`|9TMs8XQF;JV>V#4>jzAm>%x>G(f@)Y#eI^L@PZ99Xro- zMfDfrQ1+PMJYJn+4Q9k33zp1xOi^OyKap=FZd$@Q%XrGSix}GdJl{LQjSU`k-RJ8Z z6c>}Qcx1(}9(?;R{%39x!6D2v4*t_@$teQl*F5cT;l?M+Z_Y|>@9iRS!G%d4*GOz5 zaZhvQV)O3@JgVEaf9kORt6`jSMUABP{kCWvaKH35LCL&L^|eD90n*nmecG~^Y(OF5 zg1~5YIE6|w;k%yLN%=M+ja0Qjn=CR(goxC;FLZB9@J)O~dBBA!^g4q-;sr|;{UlHy z_YyoI*Fk!cFcJnIWO(zHg*m@{5!Tt_+LtQqVsxeftUUpN?x6gaUFMnx+VgVSb>2&~ zj&(PJeJz3b>jLDJ6)t@93E>O*oE#1}ip&UlmXEuwGaA_cZX8ZRgAwIvcXy|`gqXu# z*uA5NdT3RBT}&6i0%hyY#ozVnp(9e}0ywSrk2?t$ z#F0tz$sCJaHyPAXc#}M>9PRUx{+^QGOmpl%5(RVz@uaNnE_V#~VqIubBWX$ZcCqi; z^eX8eCCDPd<_Se$^45x2oGr1H#^$cLY;rq-CNqhCtGXnX3-ikGZ0=q?4DY9t|B0bm z2aa@JAL(leH5-TJC3%DOdXE_xVLXBH^BXPw2%#_pV&uJe2?tB^+RbIseJhzahCQr7 zi7Cr;DVQx@1#iXwgENX%6l?fryh7~X#iFxmG_zstP{Bn6ZpB`OkhAlj3>!@PG+$ z`M~?n6>NEh*vS789+liL`=W};*FkFu(301?UWt7aeVq|E*Z8eD&Ku0v0jVq;vyWyB zVF>4v3MtX+;d|5QA3~hG{*&muCgul|IMJfVw7iX(Edww>|Lt9*_r3|~gcoff-l~a* zeQR=$u5*vNDnitUz&3s1vp;c}bmMo6rZB|^%aBx|)GW2vO6V86n!Az?f64rI-Mr%E zh$OUPCd)XIAd&uc%*01GPANIM$v(|p0bzM+uiQGiUYDJr4@3+vrp%RwIWLycpS6!b zAucyQm}n|HWUH@m&TRGz$-uvj`klhXI^ns(T!_+=>whHL!*mya6Vf1z?BPgSE80h7 zqQl?(W`e&?ij%yjhKl|zWUl)iu+2xn4`F38rC}%-i~XO?uWM5ChcGTaBpf6uglfV^ zl9_#U|1zSly}mvtaqG^O*Hq<_Xj9g71bjm!WCk-^)_aZJ#NJC=tv*gnm+l zp!vw;UnR69=G>BH37E}<3i! z`7N>EE0|%|0Odp*tPwIwGO^KeM2j|BoQca&hq{rEs&aei6z1Zi~!6VqrE!wS7 z{br>fg}uqeuamenT*1j_+^~{+^N%Csup~wG_{if3-GtCdDKBis)^1n#fOvzAHU*6kW`3u2JqD<7|A*#mx@i2)+rIxGy8V)FQtk5%OA+O@*c-(!ze zHi@EG*^fqiYilr}KUA!&!9Di^iPQW;HEKSH$K;ZS9@>CiGnU{k>n19C^z(#92DN@$ ze~FgaRO`I_%Y|2VjB6z6pMI_2fafea-tM&jsFalGO33I7cyyq_LE6~E*|xoRq#7>* zYM(ZLCg6vDi7yvosEp9&<<`Awg6HUlTg(zBW&EH_ciWg@Ar-adA0mQ=Om^SiB1*!@yVVRE-9ZSBiu9?to&pR_;f-cwWi9|WfxT-_fp zUj3!xI$7YgCQNuMjG)q&ez4SoW`#&t3vCnh>D|lI7nw1g8?BZ#40}0Blcv8!zx*=GbRMo)lOua z%n6+RnWfIW<^en!8onXqJRcUwQ-dwpMM#YxZjP#t*8D ziHoS*;*15kf*Zg#yqr8L)R&yZlpf{sSpy~^Pu=Y2gkRO#t0(oxiMuxzn4?m|nK00& zvwL4>L%SQ&>o0e93CL~CB@2O38!c#Km@+=%eJHQu%r07Yeyz5%9;A|+)Y;!fXGDH8 zX{ze$ZT*F>xVnMy$tj74EAEl;EF#Tr#&gj~WXPV{zpdN2-m5)n-IW+)87XH+yW~V% zSJ=9GV88Z%q&r)mn}1H^JOQ7(8?3!v5M}T+vg^=hkvg)^+b6WVsF%2V^~dF*o)u&Hrb#oT z$YPbi&iyRA4I4eh0%Hb)D=FhDP$T&Eet*5O`_YzQz7$3tA5pZW5T}XHg)C%zr9y3fko3m|K>;u zY$6UU+0C3(tnKVA=D@+j(Kb8f7S2_rmRBYQz|b7b9|BwsCX}ZZUYbf*2P7cV;9!y2 za!&g&%SziUQk-|nWd@mNIclE}tOce7GBi-0lnpjI+-wu9nPbQu#JQsYmh)4CG74Jm zqDf+}5yR9V$aAm}d9j%ArL#LjOu(Y8Q++oEzT#K*s4tKpX;8>VEW@7^S-*WNSqlHlo z5!R62lp-!P9L~{1(?^m)*rPVFY-r8Dm@eqRmZRuLV@JdYEFK}u6-eyj zGlp&9b8BA6D$*JLr?7xx@9>GqBol@ADSVc{it>m;Ye$8h9jW7P_CM`E_z1~w4rTJ% zIO6m0IH51@`nzlgmJKOB0weyD+|-1mCsO{opdpbjrebFO`U6-arq2uePa$%yYkqeU zkBX~Kom_ooBmTU+kOM%m?GX>wG+lS>WSuvMA%Kd{R*KP)X`&@)j+LdWA#wrX$wb?l zLz}|OrCi>)SXp0L%nxv_=k`7UpK}{sa;DLAa}f_ey(q{6;&-S7aMa>8N9+II?MHID zwY@5MC$EP8_-9xoeP6iju1lRr;v)Sz2y0wndagL3{0->nCKfJlINp3}FH8cw%Cw=a zXY|~bE(EN=MQ>~;#il+;gi@S!6#Ul~f}Yr;EyjT#C20;X7~Vf(6H34GYSi&ZN~j4j zhnB0p|5huC_#g%8NgNhRxY78$oY&>p^x-x5Wz(BKWJ_rv+Rp<6W`Lo9p}y{c(A|;XYIctWQUDd8Los+fD=&8O0$!ia!53nA+$5 zXpX3>`pFRvn;}I@z*^}7orH<6`TfV)xFA8*XgM6OA@7KyC?kyI-WNHZ9b=wHH)5!+ zvfnP#(IjMid%WpGB3vphrO=f%vuXgP>xI&oVEbr;}SNf!n^YJ6rs1-YU# z45HFk;Q&HDVG$8|l|`>ddp>IgryPHhR21M37g>4su1^Ae=8$ldJk3joD@{p9aHSMB z+dK2@aBh99{iKPRhJ17}pS-(_eq0UO4bjxq7)DpyTS#+u!t}E_^dy7@arkvyt7T6oT;5uI>Hif9Zq-6r(wBqpQ<#I{X$UHsuu|o7B}#svxlUiox@o zm)0|T@hVE8RfDd=J3#TaVqAxu`6t&F3@V2EG~U79fSb9emdqC|{L49jo=_y1GWuIf zjd+{ha0FI2hvm){KKEXFV^P4rpN`3Ps!I@Mz)FSY*MTzR&p(a@gkS#5zaa?v>_YV$ zGiaX#lB@o6H9-t=$egtLQ%cFeIBem7!oI#&#AC&*+~Nk~SSg@H+ElaTT(Id7@_A-? zgdkHM)zuW#=p~&jP88h?6`Zb!`xE*$C7T8Cgi4R^F?o+@a1Q}JpVEg_pjuEAVCp#gs1e{bEP|K7c*s_uV)+A(8SDodV#9w z%MsHznx%$kolv|*evsiCvSCbvC+&AJ_=G_k2&fhXCvO@9hZ1OD<7l(_4KnUCyxZbm z*VMb;Az0>4h@9+?g_8J`cpzvQ!JX;iLI--k);`v5^YJ2wHzjp-wK$#Qeg2Yo5iezQJ95;nFf*JeejBkC!%3Ds}+U$xR5#%c*vmvfV z&4oRZ|F&8o17f{7_Ak8h|joLcAh-=F6FsYv4-hn_GIe(mEfs zt{_K$>^lE5JGNe(K!*Fy9>gobgjB=)g~m7;hXQt7L+^qF*L~wxa;O|@6@Q`|4wKR1 zotx{DL>_Z(K79K}LIg?EHojzEvjJo-3w>FuRy|M{5F@XJ_NlM^$3=@-IO63ytUi5_ zAgJWwtRtw1GWmmQQzT7fxF7?0%h~zYC#!V(e#PjJhBe;vJhcPg zG5W#bMx8)rfNqfwopKY9U_;dVKjrjB$bsk##DqpY6)l7kQ%M!srXq*`d92)~_ZpiB zr{Jjc7V!a(Zc_3d;YDNC-&u-^)#TJ#<8Re(%fj3#7dfPR__m$eS*`!}D(RU>Q)>Y| zC53NOxPoNIj6+nQ4K=@z3v5R2nm>8No6L)zMi$H#vAGfIClkDld>P>;#RzIGaneGd z75`;e-zExpsGwTmO~eJv;j|07M$=v>s+?_E4<14{z&*E~7~3KEOq&ts9VfLqMRhe| zyW6S3e7+y0!M+@Kbh`fb-_-I65P#}F&Yxa{A#Y;~pQ;-)|9@kcvq&R7*H|y$N)ccy zRV&NpMi`5CiRkYF-|%{-)YXf0G`q`H-&iEabi_j^GOmmnb;7D$Qgfs@Ted1kyLs`4 zcF=^epgz!1((8~DT~90Uu2}3o%afxU%xa-n-vikIfB2NXc2_Nzg$S4Ig5r`mqYxEB zn)d)k{b;@0_kdl&uo;p3Ck;U18j}Iq$A!1^fefTWxe4OX$A#Aug3PcYc1r1I{MsIq z|10S{9I5{PKYnptaeWn`;dvhGD0Sta8`_RQXL zx%|%k{{8@O_rBk+_c^cgd_A9!8=rSwvX_~T+S*!EAoQT`wlOYlBsIc3AZqn8!Xi8; zm`W}TKa6g8#;s2PfoW>30&UeFtC~8+7v?>_^0?rvgDE>gS(B%rU!#RMk^8pr=>~3VEdz`B2)WvY_t$lf{pI5F#R>f#c`vbhrA$7T1x>XoavSk3#n!&Kh@2d4}5v?Qx?-h*)65S`?Cr z1bMOMkGtlNFl;-$=Y3gW%?7o`#UEoIn}_yyoux7#w{xNXxW~J`a@4;Q;aV~lcAzYm zf99Xqnu$o03S{bKb>j?^fdso5WYtl%g@yRUCEQm>Rv=6O+*i0Pe z&v+nwsZ08AcB1!9b&t@Wn-yJQ^XMR|9_cV1dextW?mUf^jRj*ePLV!J71KUte~ZN2oZxuZmG|NAn6kJtqK5?pgP+ zQ9?QvwotYlG?g*y9v;T!g5iYs$b#I0{W_j(b#b+Za`biB;QWlYqdoH#gc+lcO1 zMbJANLZa+z+fJU{c;Ee<8EJ0%R<4u*#-Xg%<+xZEG83^gVntVWDb5t9rifQeoYWXE zW-ck+a8v@-pA8(CR@~IR=2}qD;wC5cp3-}ouj-iAK7FK%Y9Ec=m`Fm(DlQ{iA+uHQ zi@dp9nEe^(rnF4;t?kkBW7BsL2#+F`T{EuB=DE-f#ryn48@rSee@4P%AeQVywr_q5 z9(6`t_Ul7-I&4hHq=Xbv$r>Z$yLIDFpFe5N`#B%Hg8SggE!nV9MxlJ1H`o1>WF_#j!MGyVIse80+x4&li?Vy*PGQS zOR%E)-1wkRhej*=Z5~3RtTlI~#(zA8On;I(XYu-#jKv0n0mN*jUW4#j^j?~Z;R!KW z&szs=rO5%>@-^luk{JQ9RbPdgjzg#MQ00PxB>~uoG0D6w&L7e%m{VY1YHC{U-ts$J zRw?1#b?bSh18h)et*sQ@$}aX-9m1+VgRt&R=KT#+UWfH%;Vyv;(}VHs%6uNSa;|dr zw=(3po*`tnYbVCjEf?gTkX$!9zbsXf_7~v{^C65I;PrXEdlMTY)mrpLVUj901C4t+ zlEe6@H#QM1^Yc}YL(?llsb^gcV^S0qU1Tc9{OhnU0WiH7rxL4ZCOws7feND0Kv7Io8Eh+)}70kj1b_09F5u|^y{G`(9xwKp}sCln=AuQ ziCSB&T-&`Rwh(tX50YG%fS2BWfpc)rl<{~al`wEvLp{laH;jDO;k|6Iq0>NpQ@Ye8 zN#MQ7c$5{*E+f^&B{=Myc&j!Y>Z{Yv<~?xt3G4CnkX7A$`P(#Cry9&*%4u;J7dSofe^JE!g=>8`O-&)8+COW7TIJZC8+;0 z-~TdVZ*~1_QZl>XuPOXj3fHpVpx zN>8VweE#bK&g!|$p7d44mF9fYIx%~YMa7&V!f!WY>uHmBLKrOZ!4Dp8QF7#! zB5w0+T~;RCE=j&|cyi8QA@`#N0uj5%-P(WE$iKee#um05Ro~NY{sX%Cmh_f(SY1ED zH&6r}ID44iPlQkuGR3rxNG%5DC5>kTHzu3PQgKZd#~D@PEJ?yx(U z?TJXnXA;Kz9-Pp>XQPY=fDEPdRk-Iz3N|9b!#p`ab1r%F6effj(^!7^P#+4$(iBr0kr!cy8GTBJDpu>NuTFtg zHN*+Ti7K(bUe{5K4&W4*lU1Ld-#FXG25x_uFv3j-mBL_3LmrYUr_{opXDb=Ck#U1j zECjY69&x(SHr{^?LPOmgJnI7DlkIZ`pgDp=^Rr`#>^@^bvt{a5@(xK|f$+=4L{ z+f+R4OPQ(GLhI!Ak*+w9mYD6G4$q+8#O*qAC8Ifgq_}RAI3(U9;ygM?YW%81u)LhM zNHCB8&af~v-nwq*0I317x#qJ z?}X*OocgOpI1yFdm8@X*IB=Y%7wE`O?lGY43%RNex!NEFF;0UG60v`R$d|B#?fCOv zCI9=@3hX`%7EGY0O7MrZX!TP%iO%7`^@e>n;gXTCvA>d))Pk3N?;NW#OrNiwqsCyP zhHdQ0-@Nj;J|C*EH!P=y!mE&h)6@CCWAo#qm0QcrjrFnhg$(lnjF%M)I1z5BU%>Sf zdlh2_j;k`rz%eSz-Vm}WTBULQP}*+TeA4}uT^FTP)hb1~G4#}PUADm1k6c6WWB(=m zl=_>5*P2iP(G`quOeEsIr21q-I=qU zz9vhATV&`c|1(hxVT%oc1eedHSQL;|bpLB-<{Cg$ZnMB(GfFS_?%TU$h+gWE3Jcq4 z?LF_@zVMxS#}n5|NDn6LAwB}}n{_6*ZKRz#sC#Y% zFX}GR#K!MR|2Ezk;o+;EzT-2VbIt3H zAC9Hqb^UiLAJ@a0;_L>A*BjNEP$Y(Qsj+GVbaaB|Jg7)y89p=n14dlHXV;TBlfhdf z0C{g;)J&QBQomY{vA7{r>HAS9#L&2{t+85xk+j!XV64^*fe`(NzH904ffKMfDxhZx zDt;i?u6F(M>N+YU?5>NdF76GKu}t!X!;PG!FtO_jKtei%wx7@JrWc_jBGkfU{)E{7 zY4T*Jx*Rks1-y$Xjs+hdo!4oXKz74Wht$36CjE3S34*wHDl+^b{aq?W?*0(NH~g8c zj>^iIP7F)e#RN#BW8Yxf{P788V+9b`?)mr__5JfT*vMe&?S~gM!xMG^B_uPg#BVM9 z$o$(PA|f!v3PTIa-%e)(cgZ6I^@M2>3RvDbPTYV*qdz8$wQL_#OJYT32dk8NWM)0) z>CIe!K4o|H!WGDAb^bRW#|5>pbNe7Q33Tunyut@Tt3t+fA)MPxYg|1Eg05h4r^zs*h76f7XkicI) zKh|$If)Qf#-L^x<)lbM^ls?pZ#{2m`XvoRPt`Rr+jGH>m$Uh&iI=!|wg&!21Y<(JT zFI9j;E|Urs|6!<~lA6boD$|9@!05sr6#877StaVFnMD8c$?h*JEVRbljUAP`)>A;6 zyV>#(pa2HMhoqP4v6#=qI*GkAjps3V%S=Df@|Hrqe01IMxEVMR@Mf4dOnu?XBd9gR1K}^a#w8D;D9B6 zB5i52vwr(Xvf?G0-$qFpGf!9+5t<|iGGWhQ6Ic=D$;#H!rV#jhx?x$Y&1YCh6Fv*13GHy{V7jU%y9Jb-DWCroi(iiXCCjK!O-|260b-$V?|heO+`9Y84ZS}h+F?GSOU!eVPucm1b8Jf25I}cO#-PKyXcDd1FK(JN0~CP567-Rd zpf1ClZ^9aF<3$5cCOx6-HQ*MR18VRA1Z;!GE3k4aaHW=jnj@+h$#qBnrtI4HV^>bdw%woESpRD(@4Lk*%^f$pWl}Mj3boQ|HIg z+AK|v=P!7W`E>ja8$yS{pbeSOUW6vpwEvqcyXOCVTSF21a~wNAW<0B=q%U3iH=K@+ z?ufb-GXo;I58FZEWRSX3R=v2NR|fS|ycN#jpK)7VyYe&{iw}T<#dOkpSiX`}VThng zc12m{^Vr%GSFp*C)fJgW)fjiwgG#v!mug*~|63OELyyv(vh~4M-OHwJ)bAUR!Nq0E zO&_57oXFmucMu6Qbr|$cf;^2^S(i*}!k?HH28i%emO;s}E5MTC=Ga$TAd}^6{<>WhO(^2ur}K2POLlfY@c_FQ5pf0? z8X!gaQVR>2G=o)Ug5;O3@*f@%;200-K5W~f>*lS`79CdQ+yWX<^|7)rTDU8bU%Rld zP-=dh1tz)#hWLStE9~S3Kno7-#-l%sM9}J-I9{R@f8c$thQ}uQu*neg+kJRv^i2L* zBXEO03r9>N>_G{<4bQ-bKG~VY9S5{9MHqh2n)YCwK>jo@Zj;deuF;I-JeUURnUMmj z(PpipF@ba}shSr-XC$cIT>}4@2Bq@C!qE5n3Wo#YS8Oq7tl%O7U^J0qZ5ZB)z(veL zFR~|EOTp5d5VplOi4#jh4#<6=xWr}Sd zdjbnx559u8Nsq%nzGT8OaJv!U_(T?9f9wPIR=?4V=7+Sks$VoMC052jqp9h_9Xj#k z0<|OXeIirv`Qo16@ASZ(p{+~a!H1D$rGZn>kHCyOP@GLen|`X%DtK^Dr}gAZZFTRK zT%x#ya|!~L5$m^|iM>U4Ljjzwgt6%1~C{hC!I3FV~-aNDL z#A}l2ifs@i%_`I9F<95@69$imvmS?77_5Y*50(=Gl|quY3;q!U0hQ`EgHl5EF}*Mr z4>SQzms)acLd@nlnIG-YH-Ys=J=h zT7Tw}>A@zk%APD?Qp%w8A!qow?{|E9pr=$|rzKui9f}Q1;(*nI9qUOY87pzj`JaJ1 zl~un2C|Wlyc0Z=QX0Ekr0oUR5r)As!jL)1nV3O2~I~}fGNGztfK9KB>V%=}E2tPOD zwyqG3PC-J85l#OZVVf_j`c%g`Ntp0Yy@d4M!IePO)mkJ&LgOD$T9q&xkv>t5cS`WH zspqxZuE1Ihb`5Z{Iw{vIn2mZw;YTnN1G55vizk+l6@6+|GBS0d)aUk!e&X9;EMg_@ zSHJ!Pzt2qrT+lwEO&=|$v%%?wa%tyisSR1B%k9Auo)a)$A!V;A9Hb;YHjG-K0uvTK zUQ3mRer-X4P2${b*6ipn2!;6Kkdp7&;NMMo=(2fQ}zV7nR-FdAaZ_~#71B!3m zvq&1+o4G%v_hKNi!q-R{qp5O0HgQWYU+$K)sKhG-M_i!Z z*F_%~`W5rWG_bgz^LQ;PUL7h{GKD8TN{WE5pTJXZ7@OC7FUH>P`=kqbRQBl zh2U%Iec=$V7@PUDz;cN5yXQ5{t69pwo!6Eq2i4CXIFe!_sqUA9#h?ldalAEXa%16j zL6h2D?%qTS`|)~@<5iC>@YjIErs~^D-0k7M+z z5!F`x4ozwk;no>NnW%-b6w_z?`I18L%Ws3RS1Pa6FAGC(5fKZCGIIZ%_N+f8pB9fk$dgFze^8-?o6h0Qdd?k#g zl2`8<9?oRvA!r}Go(?h!wKvJEwXgf;>KWJSC-# z0(%J-{tykAhbQsDj=a?6nb3WTr`!%YK0Elk7$VhWeX!?sW4WHInm_NKc|ox{4S3Y&9Q z&G@zi50=~aG)&_COG~09#xP>;NMs^LyHNta3MzO6%n!jdq*zr5aLPOTK z+U14T<>5j7*x1;>r@dRBR6}Azo3R^}6LR3FAu?>zs;gu)^TO&b4v*0Rm$FGsUQn`s zsj!p!Iy97<$jr4~?Vce*Gj&$8v8d46lY7OJO2aYcbuFuxte1AT7?QH#s_hY}$pd>r z>L0TS@JZnA{)oDE$i}iMeMYcL<62oT>6qhoC#i@pJfbKnO;wDErTJuqsca4x)j===EGUW-4gYoKy&(wPmEqYc1_{5Ib=@M-mGpo z^fg%$-MI}oP6!UyYG*g62b$Ebv;Lhcn8p9!6&KQT+3$I(ghTv_bH#C$k3 z)aCl|cOJ{Upg;b1<;jH>7{*#un)bGlp)FkUVw;c65=d{qzWJH;ZQX}V{;pdVbjU($ zeU6p9RtwOXNJU?`U2l-a_JhODLH>HO8Graz<`$2381LE;x69*QGVOUZ5p|V1vDjT_ zzn`hL|6MiO!DnUG)wov~o80vYVdUieX1(lQSEzZk5oct{Cw%7{Gd6n(@OS}*ZhnZ{ zOuJ4+0D6;zN<~o_zET7fu_p^eE6Svk8fbdEz@28N&Aajc(>u~^xM>o9NYc?!&>J-N z1@vC1a-O#k6Q@(0F}JA^gDm9XXhWeJD0p}IQ%hYm=M2XW5!dSq9HCEN#H)!gyU1Rn zpm`cH@SLRDeDK>4xQ-y7K`GO{1~&C=v_8YBufS-T-qi_y>&v9-r~09L*jFtzG@Q4K zoPoH088dpfvPMdBcNxZV)x~~U_X)_KU)YE$Yra175$ZXBYJ1gLDB-+?;;6OZB%s9z0DfHWv)e}F*LAvovs6-U?NrXoeySr%|!2S zv=j+ly?Jq*2!*Z|e;R5eJGH$Y>k}zOIUSpP?DX^7={TF_KObgCx@VIqafElXIbQRD z7M$UCAA5tV&m4`^tlyFWr!gRS0MuIj7BGQQyR1SRyhmk|s}79{EiI)Ng}NI_#rHM% zINLQ`!5W`>!^ouQSh|jOU+Z?B#A&r!8lv$-VPX9Jv%v#qkm*U`c68Y-zEcFvr&*Tk zUgU@phl4nGdnBWk#%VFM`y@3E9(0RLrq+%hKHfI1{Xq3KT^y%+&&L8cem>1)t%iON zK=0^)tFY0sZT1$-b<}C|MMMtE9S($+o#*uqsoO#&^3+{Kb%7$idq?A{?*FQDxRI zxE#WiNo3lPQ=eUkqpQ-yOn5uP^NLH5qnQ5|{yPgpOOoC5nUp1Ip^?V?n)b|8%by(sZ%cd_kg)m1ijqEiyjrV z|CkAA^lf+X#s??d@dT0=Ns9~^&AE?H!3j`z?x)2kM;O%gIs=2Mt2~wE{ww3hZxbFG z4<&QGdyH8p$ci79?P3fPT`o?GexlOSesFO(-0}3~mqF&sr?t@vo+ce8E+5|A z2RU@#571kWvVZR@5cPAQ?tFTSnD(4!h2m+Tl~{Uirf0c!lw|6B2CG4--@wuKw01$p zo$&wx2uL)QA~)y*%yZy-q$F`oB>up|ih`p^TPWN>ANNF8Nf<5T$DDp^`o%KvXu7;} zc9k_c@WitfgU)_f)pTBGgH|SQ-(i&Lb<#fRod*RjjE73Zt_rkhc##@kWpb=@$7Ofd z(hkiLWZ^6{!W^UmSrd*Ljb4o~4(mS-%LIMX!yWyjBGS^k6mpy#v&&jS?s{z=%uGXszk{(R>$ zY})i@8-(8?`=(S`H&1`jHGT;Su&luyWnst`O6)o3WFlll8*NJ#bGjJVJEm42Z3 z;x%F6D=*vI>@8QWVfy#$bUL-zjqq3(Np^-{Ff?`Nb))@$IRSzrLq9dxExw(mX_8%2 zk)5k3%b!|1d#G0Gp#XrZ#y#2y0~3dJkM$y9S^K^t%cXO?zId=NsKfLTPsHW@b8)Zh zm*oNmoc*;SCZ5pG+9Lz)_r^_1-ZeeSRI;BO-iNezZkA*b*e3dy{chaQZk({nV4Aot$AG(+9Lt}WY*^3?(m z9?1b``XYNyE?E&Z4hic8ekkoLKPo(HC_hc&g%I-IeV_|gwni-IY^ON!HAh58eocKd z+!0%Ku?#}3A*OOk2I>a!e&?(rZh45kIycn`Ly+yHT!6G#|oPG%~>A9JJ&iqzpW6Pkea>qoqi(C8CwU) zrN(dLT}5BDrUnl^qWMR+%l-KQ$MAf4N#aHjfUV^@*}>QDdb;2RQ2JXdsSZ8PX2FDy zm65%d2XcK%M@!uML8lZMz{!4Spsq?P)S;ccE@3a>CKX-s*S4$ljUv5VNm8^4p+Cbe72%2WIOi}sp&OHtlN!SOfP~+IKbV0g_ zz=Zmh&X;^U4pLm>Gdc05$f9s>MtP6R0p)+Xq>~*8R_*>N=yYz5MzTLqK^i7SgUvKg zV@P>AS8oV?uVJRd;;udW`cfU1`kQzG7SE16T<v5_(2W`E1V6O{yqA~@%lR9WJ{QeD9m&R zEn(k6=iip4rS3(oboOYOEa zKgfUTLpL~td~;!|M%lJo!O&nKx{qDOMaJz1@A81fxZP`0{5G0sB!JM-CPHJ zOa2ci+o?7D0ny7kwyuBT6OU#ZS)qtpa;Sz0p)(^*IOR$_uI){EhiQxoNuPprsXP6>P-2@1>Dk$EL7CHwYGm;9d$V&o2O~eUfNq`fj9>gi zr+6U+1#c-=@AF$zmx`$fM?B8SQ?L7s7EF>hwo5_*WO^Zk8QHpDO%uq@@V@=d9ti_8rs$FLCP!=B zCasHiIy?N3Dg@8c6^FR#w9f`?J~4bfsN%|OARBsw7glDch@&$d5}zZOqizuonX zJ;A#7O=}d2;du@j0e`U9lBs*tyT1(g>sIHlLNZnuR5BT?)rx)D4_KmTS9us;NoZJu zN$^%HXe{x~80hhX)?~-bQc^G4KD+6w1RiCzA6l??8@U=H&mMyF#O6yg3ij!lZCktmr7w$G%&w9pRHP=;sr>FjXBawKBGulPT7mwp+c_4;I~g!vV%{jf4qkUR$mzMe|UWX7vA=EsO$1k zOwbGub0po~fmBid=gh`mc+=`wjd1yqAi+y*_0{cT1q~V3O?Rv?HBNvw5UT7RUgNK8yUC z=#sB0Kj9(t;FQVjpV{?`gSz!HwdwZY{cjARa+e*RpMCOxBriX=uK7nN>lMJ$lRs?- zX97v>M5^);ymvz5RHRAL!zMOl(pL&q)BYx+fT?Ta^S zZoG0SsW2?NjFs%3%ZNv;W=$FOD&zuU^hGFdZq>^r - - - - Kara - - - - - - - - - - - - -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- {{ this.name }} -
- -
- -
-
- - Loading... - -
-
- - Loading... - -
-
- - Loading... - -
-
-
- -
- -
- - - - - - - - - -
- - - - - - - - - - - - - - - - - - diff --git a/js/lightbox.min.js b/js/lightbox.min.js deleted file mode 100644 index efb7acd..0000000 --- a/js/lightbox.min.js +++ /dev/null @@ -1,15 +0,0 @@ -/*! - * Lightbox v2.11.3 - * by Lokesh Dhakar - * - * More info: - * http://lokeshdhakar.com/projects/lightbox2/ - * - * Copyright Lokesh Dhakar - * Released under the MIT license - * https://github.com/lokesh/lightbox2/blob/master/LICENSE - * - * @preserve - */ -!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.lightbox=b(a.jQuery)}(this,function(a){function b(b){this.album=[],this.currentImageIndex=void 0,this.init(),this.options=a.extend({},this.constructor.defaults),this.option(b)}return b.defaults={albumLabel:"Image %1 of %2",alwaysShowNavOnTouchDevices:!1,fadeDuration:600,fitImagesInViewport:!0,imageFadeDuration:600,positionFromTop:50,resizeDuration:700,showImageNumberLabel:!0,wrapAround:!1,disableScrolling:!1,sanitizeTitle:!1},b.prototype.option=function(b){a.extend(this.options,b)},b.prototype.imageCountLabel=function(a,b){return this.options.albumLabel.replace(/%1/g,a).replace(/%2/g,b)},b.prototype.init=function(){var b=this;a(document).ready(function(){b.enable(),b.build()})},b.prototype.enable=function(){var b=this;a("body").on("click","a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]",function(c){return b.start(a(c.currentTarget)),!1})},b.prototype.build=function(){if(!(a("#lightbox").length>0)){var b=this;a('
').appendTo(a("body")),this.$lightbox=a("#lightbox"),this.$overlay=a("#lightboxOverlay"),this.$outerContainer=this.$lightbox.find(".lb-outerContainer"),this.$container=this.$lightbox.find(".lb-container"),this.$image=this.$lightbox.find(".lb-image"),this.$nav=this.$lightbox.find(".lb-nav"),this.containerPadding={top:parseInt(this.$container.css("padding-top"),10),right:parseInt(this.$container.css("padding-right"),10),bottom:parseInt(this.$container.css("padding-bottom"),10),left:parseInt(this.$container.css("padding-left"),10)},this.imageBorderWidth={top:parseInt(this.$image.css("border-top-width"),10),right:parseInt(this.$image.css("border-right-width"),10),bottom:parseInt(this.$image.css("border-bottom-width"),10),left:parseInt(this.$image.css("border-left-width"),10)},this.$overlay.hide().on("click",function(){return b.end(),!1}),this.$lightbox.hide().on("click",function(c){"lightbox"===a(c.target).attr("id")&&b.end()}),this.$outerContainer.on("click",function(c){return"lightbox"===a(c.target).attr("id")&&b.end(),!1}),this.$lightbox.find(".lb-prev").on("click",function(){return 0===b.currentImageIndex?b.changeImage(b.album.length-1):b.changeImage(b.currentImageIndex-1),!1}),this.$lightbox.find(".lb-next").on("click",function(){return b.currentImageIndex===b.album.length-1?b.changeImage(0):b.changeImage(b.currentImageIndex+1),!1}),this.$nav.on("mousedown",function(a){3===a.which&&(b.$nav.css("pointer-events","none"),b.$lightbox.one("contextmenu",function(){setTimeout(function(){this.$nav.css("pointer-events","auto")}.bind(b),0)}))}),this.$lightbox.find(".lb-loader, .lb-close").on("click",function(){return b.end(),!1})}},b.prototype.start=function(b){function c(a){d.album.push({alt:a.attr("data-alt"),link:a.attr("href"),title:a.attr("data-title")||a.attr("title")})}var d=this,e=a(window);e.on("resize",a.proxy(this.sizeOverlay,this)),this.sizeOverlay(),this.album=[];var f,g=0,h=b.attr("data-lightbox");if(h){f=a(b.prop("tagName")+'[data-lightbox="'+h+'"]');for(var i=0;ik||g.height>j)&&(g.width/k>g.height/j?(i=k,h=parseInt(g.height/(g.width/i),10),f.width(i),f.height(h)):(h=j,i=parseInt(g.width/(g.height/h),10),f.width(i),f.height(h))),c.sizeContainer(f.width(),f.height())},g.src=this.album[b].link,this.currentImageIndex=b},b.prototype.sizeOverlay=function(){var b=this;setTimeout(function(){b.$overlay.width(a(document).width()).height(a(document).height())},0)},b.prototype.sizeContainer=function(a,b){function c(){d.$lightbox.find(".lb-dataContainer").width(g),d.$lightbox.find(".lb-prevLink").height(h),d.$lightbox.find(".lb-nextLink").height(h),d.$overlay.focus(),d.showImage()}var d=this,e=this.$outerContainer.outerWidth(),f=this.$outerContainer.outerHeight(),g=a+this.containerPadding.left+this.containerPadding.right+this.imageBorderWidth.left+this.imageBorderWidth.right,h=b+this.containerPadding.top+this.containerPadding.bottom+this.imageBorderWidth.top+this.imageBorderWidth.bottom;e!==g||f!==h?this.$outerContainer.animate({width:g,height:h},this.options.resizeDuration,"swing",function(){c()}):c()},b.prototype.showImage=function(){this.$lightbox.find(".lb-loader").stop(!0).hide(),this.$lightbox.find(".lb-image").fadeIn(this.options.imageFadeDuration),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},b.prototype.updateNav=function(){var a=!1;try{document.createEvent("TouchEvent"),a=!!this.options.alwaysShowNavOnTouchDevices}catch(a){}this.$lightbox.find(".lb-nav").show(),this.album.length>1&&(this.options.wrapAround?(a&&this.$lightbox.find(".lb-prev, .lb-next").css("opacity","1"),this.$lightbox.find(".lb-prev, .lb-next").show()):(this.currentImageIndex>0&&(this.$lightbox.find(".lb-prev").show(),a&&this.$lightbox.find(".lb-prev").css("opacity","1")),this.currentImageIndex1&&this.options.showImageNumberLabel){var c=this.imageCountLabel(this.currentImageIndex+1,this.album.length);this.$lightbox.find(".lb-number").text(c).fadeIn("fast")}else this.$lightbox.find(".lb-number").hide();this.$outerContainer.removeClass("animating"),this.$lightbox.find(".lb-dataContainer").fadeIn(this.options.resizeDuration,function(){return a.sizeOverlay()})},b.prototype.preloadNeighboringImages=function(){if(this.album.length>this.currentImageIndex+1){(new Image).src=this.album[this.currentImageIndex+1].link}if(this.currentImageIndex>0){(new Image).src=this.album[this.currentImageIndex-1].link}},b.prototype.enableKeyboardNav=function(){this.$lightbox.on("keyup.keyboard",a.proxy(this.keyboardAction,this)),this.$overlay.on("keyup.keyboard",a.proxy(this.keyboardAction,this))},b.prototype.disableKeyboardNav=function(){this.$lightbox.off(".keyboard"),this.$overlay.off(".keyboard")},b.prototype.keyboardAction=function(a){var b=a.keyCode;27===b?(a.stopPropagation(),this.end()):37===b?0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1):39===b&&(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&this.album.length>1&&this.changeImage(0))},b.prototype.end=function(){this.disableKeyboardNav(),a(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),this.options.disableScrolling&&a("body").removeClass("lb-disable-scrolling")},new b}); -//# sourceMappingURL=lightbox.min.map \ No newline at end of file diff --git a/manifest/kara.json b/manifest/kara.json deleted file mode 100644 index 1661553..0000000 --- a/manifest/kara.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "short_name": "Kara", - "name": "Kara", - "icons": [ - { - "src": "/img/logo/luna/256.png", - "type": "image/png", - "sizes": "256x256" - } - ], - "start_url": "/kara/", - "background_color": "#383838", - "display": "standalone", - "scope": "/kara/", - "theme_color": "#383838" -} \ No newline at end of file