Initial commit
11
.gitignore
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
.DS_Store
|
||||
._.DS_Store
|
||||
node_modules
|
||||
package-lock.json
|
||||
dist/*
|
||||
bin/*
|
||||
data/db/data.db
|
||||
nginx/flip_cohen.conf
|
||||
data/config/config.yaml
|
||||
cohen_site
|
||||
!.keep
|
||||
21
Makefile
Normal file
@ -0,0 +1,21 @@
|
||||
.PHONY: all clean config
|
||||
|
||||
all: bin/site_flip dist/js/shared.js dist/css/index.css config
|
||||
|
||||
bin/site_flip: main.go events.go albums.go
|
||||
go build main.go events.go albums.go && mv main bin/site_flip
|
||||
|
||||
dist/js/shared.js: $(wildcard src/js/*.js src/js/*/*.js)
|
||||
NODE_ENV=production gulp build
|
||||
|
||||
dist/css/index.css: $(wildcard src/sass/*.scss src/sass/*/*.scss)
|
||||
NODE_ENV=production gulp build
|
||||
|
||||
config: nginx/flip_cohen.conf
|
||||
|
||||
nginx/flip_cohen.conf: nginx/template.conf
|
||||
./init.sh `pwd`
|
||||
|
||||
clean:
|
||||
rm -f nginx/flip_cohen.conf
|
||||
rm -f bin/site_flip
|
||||
152
albums.go
Normal file
@ -0,0 +1,152 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Song struct {
|
||||
Title string
|
||||
Lyrics []string
|
||||
Path string
|
||||
NR string
|
||||
}
|
||||
|
||||
type Album struct {
|
||||
Name string
|
||||
Release string
|
||||
Path string
|
||||
Songs []Song
|
||||
Links map[string]string
|
||||
}
|
||||
|
||||
const ALBUM_DIR = "./data/albums/"
|
||||
|
||||
var albums []*Album
|
||||
|
||||
func parseAlbumName(fName string) (string, string) {
|
||||
s := strings.Split(fName, ".")
|
||||
s = strings.Split(s[0], "_")
|
||||
|
||||
return s[0], strings.Join(s[1:], " ")
|
||||
}
|
||||
|
||||
func ParseSong(s os.FileInfo, basePath string) Song {
|
||||
nr, title := parseAlbumName(s.Name())
|
||||
|
||||
f, err := os.Open(path.Join(basePath, s.Name()))
|
||||
defer f.Close()
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
content, err := ioutil.ReadAll(f)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
lyrics := strings.Split(string(content), "\n\n")
|
||||
|
||||
song := Song{
|
||||
Title: title,
|
||||
Lyrics: lyrics,
|
||||
Path: strings.ToLower(strings.Replace(title, " ", "-", -1)),
|
||||
NR: nr,
|
||||
}
|
||||
|
||||
return song
|
||||
}
|
||||
|
||||
func getSong(album *Album, title string) (Song, error) {
|
||||
for _, song := range album.Songs {
|
||||
if song.Path == strings.ToLower(title) {
|
||||
return song, nil
|
||||
}
|
||||
}
|
||||
|
||||
return Song{}, io.EOF
|
||||
}
|
||||
|
||||
func ParseAlbum(f os.FileInfo) *Album {
|
||||
year, name := parseAlbumName(f.Name())
|
||||
|
||||
filen := path.Join(ROOT_DIR, ALBUM_DIR, f.Name())
|
||||
|
||||
files, err := ioutil.ReadDir(filen)
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Error read songs: %s", err)
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
album := Album{
|
||||
Name: name,
|
||||
Path: strings.ToLower(strings.Replace(name, " ", "-", -1)),
|
||||
Release: year,
|
||||
}
|
||||
|
||||
for _, f := range files {
|
||||
if !strings.HasSuffix(f.Name(), ".lyric") {
|
||||
continue
|
||||
}
|
||||
album.Songs = append(album.Songs, ParseSong(f, filen))
|
||||
}
|
||||
|
||||
fd, err := os.Open(path.Join(filen, "info.json"))
|
||||
defer fd.Close()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Error info.json: %s", err)
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
content, _ := ioutil.ReadAll(fd)
|
||||
|
||||
json.Unmarshal(content, &album)
|
||||
|
||||
return &album
|
||||
}
|
||||
|
||||
func getAlbum(albums []*Album, title string) (*Album, error) {
|
||||
for _, album := range albums {
|
||||
if album.Path == strings.ToLower(title) {
|
||||
return album, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, io.EOF
|
||||
}
|
||||
|
||||
func getAlbums() []*Album {
|
||||
if albums != nil {
|
||||
return albums
|
||||
}
|
||||
|
||||
files, err := ioutil.ReadDir(path.Join(ROOT_DIR, ALBUM_DIR))
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
for _, f := range files {
|
||||
if strings.HasPrefix(f.Name(), ".") {
|
||||
continue
|
||||
}
|
||||
albums = append(albums, ParseAlbum(f))
|
||||
}
|
||||
|
||||
for i := len(albums)/2 - 1; i >= 0; i-- {
|
||||
opp := len(albums) - 1 - i
|
||||
albums[i], albums[opp] = albums[opp], albums[i]
|
||||
}
|
||||
|
||||
return albums
|
||||
}
|
||||
30
data/albums/2013_Bellse_Parese/01_Tijd_te_koop.lyric
Normal file
@ -0,0 +1,30 @@
|
||||
Ga het bos in met een stropdas om je nek
|
||||
Zodat de kraaien weten: die hangt niet voor gek
|
||||
En je hoort je kind al huilen en de kerkklok voor je luiden
|
||||
En voor god, die jouw driften steeds verbood
|
||||
Maar je ziet twee mannen bij de dennen doen wat jij steeds moest ontkennen
|
||||
En hun kreunen fluisteren frutselend aan jouw knoop
|
||||
|
||||
Tijd te koop, tijd te koop, tijd te koop
|
||||
|
||||
Wie kent een kind dat nimmer heeft gejokt?
|
||||
Ik ken een kind dat door de zee werd opgeslokt
|
||||
Hij werd verzwolgen door de golven en weer uitgekotst door kolken
|
||||
In een volk dat riep: 'ga terug naar het scheepswrak waar je hoort
|
||||
Oh, zijn zakmes vindt zijn pols wel. 'Ach jongen, ik heb een voorstel'
|
||||
Roept de koning farizeeër met de hoorntjes uit zijn hoofd
|
||||
|
||||
Tijd te koop, tijd te koop, tijd te koop
|
||||
Tijd te koop
|
||||
|
||||
Leef elke dag alsof het je laatste is
|
||||
En nooit geschoten dat is altijd mis
|
||||
Dus je speelt roulette met Russen, het is jouw beurt de loop te kussen
|
||||
Je hoort 'klik' en krijgt het geld zoals beloofd
|
||||
Maar buiten in het steegje hoor je: 'Hé daar! Niet bewegen...'
|
||||
En je weet: dat is wel een echte loop tegen je hoofd
|
||||
|
||||
Tijd te koop, tijd te koop, tijd te koop
|
||||
Tijd te koop
|
||||
|
||||
Ga het bos in met een stropdas om je nek
|
||||
48
data/albums/2013_Bellse_Parese/02_Ik_heb_de_macht.lyric
Normal file
@ -0,0 +1,48 @@
|
||||
Ik ben dapper maar onrechtvaardig
|
||||
Ik ben strategisch maar ik ben kwaadaardig
|
||||
Ik ben gelukkig maar niet te pruimen
|
||||
Ik ben een baby zonder speen en met afgehakte duimen
|
||||
Ik ben de klootzak die steeds het laatste lacht
|
||||
|
||||
Ben charismatisch maar immoreel
|
||||
Gebruik mijn naasten, mijn naasten instrumenteel
|
||||
Ik ben de roofbouw, ik ben de ploeg
|
||||
En zelfs van mijn hebzucht heb ik nog niet genoeg
|
||||
De hyena die steeds het laatste lacht, maar hé!
|
||||
|
||||
Ik heb de – Sir yes sir
|
||||
Macht – Sir yes sir
|
||||
Ik heb de – Sir yes sir
|
||||
Macht – Sir yes sir
|
||||
Ik heb de macht!
|
||||
|
||||
Ik ben groots maar kleinzielig
|
||||
Ik win altijd, maar ik win, ik win schlemielig
|
||||
Ik ben de trap in de ballen
|
||||
De appel die niet rust voordat hij omhoog kan vallen
|
||||
De hyena die steeds het laatste lacht, maar hé!
|
||||
|
||||
Ik heb de – Sir yes sir
|
||||
Macht – Sir yes sir
|
||||
Ik heb de – Sir yes sir
|
||||
Macht – Sir yes sir
|
||||
Ik heb de macht!
|
||||
|
||||
Ik ben de bergen, ik ben de dalen
|
||||
Ik ben de levenszin vertaald in alle talen
|
||||
Ik ben de wijsheid, ik ben waarachtig
|
||||
Op de bodem van de diepste zee is elke monnik toch weer oppervlakkig
|
||||
Maar IK...
|
||||
|
||||
IK rijk dieper
|
||||
IK vlieg hoger
|
||||
Voorbij de tijdgeest
|
||||
Voorbij het feit
|
||||
IK bezweer het lot, IK ben de heerser van de onbeheersbaarheid
|
||||
Die steeds het laatste lacht. Want
|
||||
|
||||
IK heb de – Sir yes sir
|
||||
Macht – Sir yes sir
|
||||
IK heb de – Sir yes sir
|
||||
Macht – Sir yes sir
|
||||
IK heb de macht!
|
||||
42
data/albums/2013_Bellse_Parese/03_Plafond.lyric
Normal file
@ -0,0 +1,42 @@
|
||||
Het plafond is altijd schoon
|
||||
Stof dwarrelt naar beneden
|
||||
Op pizzadozen van een maand geleden
|
||||
En half lege halve liters bier
|
||||
|
||||
Bob Marley door de muren
|
||||
Reggaeparty bij de buren
|
||||
In hun slaapkamer doen twee liefjes het
|
||||
En ik lig hier maar alleen starend op mijn bed
|
||||
Starend op mijn bed lig ik alleen maar hier
|
||||
|
||||
Nagels in een wijnglas
|
||||
Schimmel in de bank
|
||||
Dat ik hier ranzig woon
|
||||
Ach man, ik kijk toch alleen omhoog
|
||||
Ik kijk alleen omhoog
|
||||
En het plafond is altijd schoon
|
||||
|
||||
Ja, ik klom uit het konijnenhol
|
||||
De rode rook rond haar gezicht
|
||||
Want ja, ze mist de spiegel
|
||||
Die op de wereld staat gericht
|
||||
|
||||
Maar hier alleen in mijn drakenhol
|
||||
Dreunt het door mijn kop:
|
||||
Zij is de schoonheid in verandering
|
||||
Die door de wereld juist gespiegeld wordt
|
||||
|
||||
Nagels in een wijnglas
|
||||
Schimmel in de bank
|
||||
Ladderzat en stoned
|
||||
Kijk ik heel de nacht omhoog
|
||||
Ik kijk alleen omhoog
|
||||
|
||||
Want zou ik nu gaan slapen
|
||||
Zie ik hoe ze met hem vrijt
|
||||
Een door het slijk getrokken droom
|
||||
Dus kijk ik heel de nacht omhoog
|
||||
Ik kijk alleen omhoog
|
||||
Want het plafond is altijd schoon
|
||||
|
||||
Het plafond is altijd schoon
|
||||
47
data/albums/2013_Bellse_Parese/04_Wie_de_koe.lyric
Normal file
@ -0,0 +1,47 @@
|
||||
Ik ben al oud
|
||||
Wellicht zie jij op elke steen mijn naam al staan
|
||||
Maar ik vind heus nog wel een stok
|
||||
Waarmee ik jou
|
||||
Voordat je met mijn dochter trouwt de goede kant op zal slaan
|
||||
Want er moet nou eenmaal brood op de plank
|
||||
|
||||
En dat je van haar houdt
|
||||
Maar voor jouw hart van goud betaalt geen hond hier geld
|
||||
Dat is het enige dat telt
|
||||
Ga je mee naar het museum?
|
||||
De onvoorwaardelijke liefde wordt tentoongesteld
|
||||
Er moet brood op de plank
|
||||
|
||||
Neem haar hand
|
||||
Zodra je je principes laat verwelken
|
||||
Er is niks zo armetierig
|
||||
Als een werkeloze intellectueel
|
||||
|
||||
Neem haar hand
|
||||
Zodra je je principes laat verwelken
|
||||
Wie de koe bij de horens vat
|
||||
Kan haar niet meer melken
|
||||
|
||||
Ik ben al oud
|
||||
Dus denk je nu werkelijk dat jij deze hond nog iets leert?
|
||||
Ik zal maar doen wat ik je vraag
|
||||
Mijn geweten en ik zijn al eeuwen gebrouilleerd
|
||||
Wil je haar hand?
|
||||
Dan komt er brood op de plank
|
||||
|
||||
Neem haar hand
|
||||
Zodra je je principes laat verwelken
|
||||
Je bruid is veel en veel te mooi
|
||||
Om daar geen munt uit te slaan
|
||||
|
||||
Neem haar hand
|
||||
Zodra je je principes laat verwelken
|
||||
Wie de koe bij de horens vat
|
||||
Kan haar niet meer melken
|
||||
|
||||
Wie de koe bij de horens vat kan haar niet meer melken
|
||||
Wie de koe bij de horens vat kan haar niet meer melken
|
||||
Wie de koe bij de horens vat kan haar niet meer melken
|
||||
Wie de koe bij de horens vat kan haar niet meer melken
|
||||
Wie de koe bij de horens vat kan haar niet meer melken
|
||||
Wie de koe bij de horens vat kan haar niet meer melken
|
||||
32
data/albums/2013_Bellse_Parese/05_Alles_van_waarde.lyric
Normal file
@ -0,0 +1,32 @@
|
||||
Voer je hart aan maden
|
||||
Ruk je nagels uit, verkoop ze aan de smaad
|
||||
Voer je idealen aan de slager
|
||||
En je vuist aan het verraad
|
||||
|
||||
Of geloof dat de machten het werkelijk iets kan schelen [1]
|
||||
Naar welke kant jouw weegschaal uit zal slaan
|
||||
En verkoop je hoop aan het 'meer dan de som der delen'
|
||||
Maar alles van waarde zal hoe dan ook vergaan
|
||||
|
||||
Voer je rede aan het toeval
|
||||
En je matigheid geef die [2] maar aan de drank
|
||||
Voer je zaad aan de oerknal
|
||||
En je eerlijkheid laat haar investeren door de bank
|
||||
|
||||
Of geloof dat de machten het werkelijk iets kan schelen [1]
|
||||
Naar welke kant jouw weegschaal uit zal slaan
|
||||
En verkoop je hoop aan het 'meer dan de som der delen'
|
||||
Maar alles van waarde zal hoe dan ook vergaan
|
||||
|
||||
Verga in de illusie dat het anders kan
|
||||
Verga in de illusie dat het beter moet
|
||||
Verga in de illusie, verga in de illusie
|
||||
Verga in de illusie dat het anders kan
|
||||
Of besta hier in de wereld
|
||||
Besta hier in de echte, onverschillige wereld
|
||||
Waarin er niks, helemaal niks toe doet
|
||||
|
||||
Alles van waarde zal hoe dan ook vergaan
|
||||
|
||||
1. Op plaat klinkt: 'Of geloof dat de machten het werkelijk kunnen schelen'
|
||||
2. Op de plaat klinkt: 'dat'
|
||||
25
data/albums/2013_Bellse_Parese/06_De_afstand.lyric
Normal file
@ -0,0 +1,25 @@
|
||||
We zitten samen aan de kade
|
||||
Jij gooit een steentje in de maan
|
||||
En dan verlaat je me
|
||||
Het was allang tijd om te gaan
|
||||
|
||||
En in ons spiegelbeeld
|
||||
Gooi jij een hand vol kiezelstenen
|
||||
Langzaam wordt het beeld weer zichtbaar
|
||||
En ben jij eruit verdwenen
|
||||
|
||||
De horizon kwam rakelings voorbij
|
||||
(neurie)
|
||||
De horizon kwam rakelings voorbij
|
||||
Maar jij blijft de afstand tussen ik en wij
|
||||
(neurie)
|
||||
|
||||
De horizon kwam rakelings voorbij
|
||||
(neurie)
|
||||
De horizon kwam rakelings voorbij
|
||||
Maar jij blijft de afstand tussen ik en wij
|
||||
|
||||
Ik en wij
|
||||
Jij gooit een steentje in de maan
|
||||
En dan verlaat je me
|
||||
Het was allang tijd om te gaan
|
||||
@ -0,0 +1,44 @@
|
||||
Er zat een meisje bij een boom
|
||||
Ze zei: Ik had vannacht een droom
|
||||
Een open veld, een lange man
|
||||
Die prekend uit een boek daar stond
|
||||
|
||||
En na elk woord dat hij had verteld
|
||||
Boog elk wezen van dat veld
|
||||
Vogels zonder vleugels
|
||||
Mensen zonder mond
|
||||
|
||||
Niemand durfde de bossen in
|
||||
Die schaduw, die vertwijfeling
|
||||
Ze dachten: elk nieuw begin
|
||||
Is veel kouder dan die open grond
|
||||
|
||||
Dus bogen bomen naar die man
|
||||
Hij zal het dus wel weten dan
|
||||
Dachten vogels zonder vleugels
|
||||
En mensen, mensen zonder mond
|
||||
|
||||
Het meisje zei dat ze ook wist
|
||||
Waarom een vogel vleugels mist
|
||||
Want ze droomde in haar droom vannacht
|
||||
Dat zij er twee weer vleugels gaf
|
||||
|
||||
Nou, de eerste vloog maar was zo bang
|
||||
Ze vloog niet hoger dan die man
|
||||
Dus greep de man haar uit de lucht
|
||||
En sneed haar vleugels af
|
||||
|
||||
En de tweede dacht dat zij wel kon
|
||||
Vliegen nog voorbij de zon
|
||||
Haar vleugels smolten
|
||||
En ze stortte neer op de open grond
|
||||
|
||||
Dus boog de hemel voor die vent
|
||||
Toen vrijheid leek op onbegrensd, of angstig was
|
||||
Als de vogels zonder vleugels
|
||||
Of als mensen zonder mond
|
||||
|
||||
Dus buigen bomen voor die man
|
||||
Hij brengt ons echt geen vrijheid want
|
||||
Hij snijdt alleen de vleugels af bij vogels
|
||||
Hij schept mensen zonder mond
|
||||
55
data/albums/2013_Bellse_Parese/08_Het_schipperslied.lyric
Normal file
@ -0,0 +1,55 @@
|
||||
Elke schipper die jouw schaakte gaf jou hoop op een remise
|
||||
Zodat het spel maar later werd; veel later
|
||||
En nu je aan het water staart naar schepen die verdwijnen
|
||||
Weet je dat hij slechts de rust zocht van jouw haven
|
||||
Maar al wekenlang jouw armen had verslagen
|
||||
|
||||
En je bouwt in de ruïne die jij je ziel noemt, jezelf weer op
|
||||
Uit het wrakhout van je omgevallen koning
|
||||
Als elke schipper schaakte hij slechts voor die vrouw die werkelijk
|
||||
Werkelijk zijn koning bedreigen
|
||||
Een koningin die zeeën weg kan grijnzen
|
||||
Niet het eerste het beste havenmeisje
|
||||
En opeens begin je dat te begrijpen
|
||||
|
||||
En je blinkt weer aan de horizon als een vesting als een bastion [1]
|
||||
Waar weer een schipper heen vaart om te schaken
|
||||
Hij speelt de 'schippersopening': laat zijn heer zonder verdediging
|
||||
En zegt dat hij zijn droom heeft laten varen
|
||||
Dat hij geen schipper is maar de 'eeuwige schaker'
|
||||
|
||||
Dus je biedt die man je haven aan, je wijn, je bed, je lichaam
|
||||
Maar je merkt hoe voorspelbaar hij ontwikkelt
|
||||
Hij fluistert dat hij je begeert.
|
||||
Maar je weet dat elke schipper dan rokeert en zo probeert te winnen
|
||||
Plots valt het zwaar hem nog aantrekkelijk te vinden
|
||||
|
||||
Woest kijk je naar buiten, naar de zee, maar je blik wordt mild
|
||||
De golven lijken van je af te stromen
|
||||
Jouw haven is van wal geraakt en al haar duizend boten schreeuwen
|
||||
Dat jij, ja jij, aan boord mag komen
|
||||
Dat jij, ja jij, van verre landen mag gaan dromen
|
||||
|
||||
En meteen doemt dat veld weer op, die verdrongen baai op het open bord
|
||||
Met die klippen waarop jouw schip ooit is versplinterd
|
||||
Maar nu schuif jij je dame naar dat veld
|
||||
Hij neemt je aas, jij zet hem schaak en in je ooghoek zie je zijn heer schrikken
|
||||
Want zulke vallen zet alleen een schipper
|
||||
En hij beseft dat hij onmogelijk nog kan winnen
|
||||
|
||||
Hij bedenkt nog wel een wanhoopsplan maar het anker op zijn bovenarm
|
||||
Lijkt voor jouw koningin te moeten kiezen
|
||||
Hij krijgt zijn arm niet opgetild
|
||||
En speelt die zet die een schipper alleen speelt als hij niks meer kan verliezen
|
||||
Valt op zijn knieën en zegt: mijn liefste, mijn koningin
|
||||
Ik bied je een remise
|
||||
|
||||
En ik bouw in de ruïne die ik mijn ziel noem mezelf weer op
|
||||
Uit het wrakhout van mijn omgevallen koning
|
||||
Als elke schipper schaakte jij slechts voor die heer die werkelijk
|
||||
Werkelijk jouw dame kan verleiden
|
||||
Een koning die zeeën weg kan grijnzen
|
||||
Geen troubadour met zijn valse liefdeswijsjes
|
||||
Maar een koning die zeeën weg kan grijnzen
|
||||
|
||||
1. Op de plaat klinkt: 'bataljon'
|
||||
47
data/albums/2013_Bellse_Parese/09_Langzaam.lyric
Normal file
@ -0,0 +1,47 @@
|
||||
Ze zei: leg je hoofd op mijn borsten
|
||||
Voel mijn adem en hart en geloof in dat
|
||||
Wat je nooit zeker weet
|
||||
|
||||
Ik zei: liefste
|
||||
Als jouw liefde geloof is, geloof mij zij schiep me
|
||||
Ik ben haar profeet
|
||||
|
||||
Stuur engel Gabriël dan schrijf ik uw verhaal wel
|
||||
Leid de duif naar de olijftak en hoor mijn dankgebed
|
||||
|
||||
Ze zei: je woorden zijn een kaartenhuis
|
||||
Een zuchtje, weg charme
|
||||
Zet je hersens eens op stop man en omarm me
|
||||
Heb in het echt lief
|
||||
Naast me in bed
|
||||
|
||||
En langzaam raak ik haar volmaakte lichaam aan
|
||||
En drink ik haar lippen als wijn
|
||||
Langzaam brengt ze maar waar je alleen nooit kan gaan
|
||||
En geloof je haar: dit is het enige waar het allemaal om gaat
|
||||
|
||||
Toen ik nog een kind was
|
||||
Was ik boos op nacht omdat ze zo lang was
|
||||
En ik veel te grote delen van mijn leven vergat
|
||||
|
||||
Maar de nachtzwanen zingen
|
||||
Open ik straks de gordijnen, heeft de ochtend zich geschilderd
|
||||
En wilde ik dat ik nog wat nacht had met jou
|
||||
|
||||
Ze zei: laat ons dan beginnen
|
||||
Zo langzaam te beminnen
|
||||
Dat de haastige dag
|
||||
Ons uiteindelijk vergeet
|
||||
|
||||
Leg je hoofd op mijn borsten
|
||||
Voel mijn adem en hart
|
||||
En geloof in dat
|
||||
Wat je nooit zeker weet
|
||||
|
||||
En langzaam raak ik haar volmaakte lichaam aan
|
||||
Vrij in de zilveren maan
|
||||
Langzaam brengt ze me waar je alleen nooit kan gaan
|
||||
En langzaam raakt zij mijn lichaam aan
|
||||
En drinkt ze mijn lichaam als wijn
|
||||
Langzaam breng ik haar waar je alleen nooit kan gaan
|
||||
En weet je wel zeker: dit is het enige waar het allemaal om gaat
|
||||
42
data/albums/2013_Bellse_Parese/10_Jasmijnthee.lyric
Normal file
@ -0,0 +1,42 @@
|
||||
Dans me als de mus in jouw hand
|
||||
Met zijn fluit de zon bezweert
|
||||
En dans me als jouw schaduw
|
||||
Met de wolven naar de maan terugkeert
|
||||
Ay, ay, ay ay, in stille klanken
|
||||
Dans me liefje, dans
|
||||
Dans me naar jouw lippen
|
||||
Zacht in het dauwgras of de geur van
|
||||
Jasmijnthee in de nacht
|
||||
|
||||
En vrij me bij de vijver
|
||||
Als de meidoorns in jouw ogen zwemmen
|
||||
Vrij me als het vriest in huis
|
||||
En wij elkaar in vuur omklemmen
|
||||
Ay, ay, ay ay, stille getijden
|
||||
Vrij me liefje
|
||||
Ay, ay, jouw lentes als je lacht
|
||||
En de herfstwind als wij vrijen
|
||||
Jasmijnthee in de nacht
|
||||
|
||||
En jouw lichaam bloesemt open
|
||||
In de dagen zonder vragen
|
||||
Seizoenen knielen volgzaam
|
||||
Voor de jaren van gitaren
|
||||
Vurige sonates zullen klinken
|
||||
En drinken op jouw pracht
|
||||
Voor rode balustrades
|
||||
Jasmijnthee in de nacht
|
||||
|
||||
Want telkens als ik liefde zie
|
||||
Als vruchteloze appelboom
|
||||
Bestijg jij juist die nachtmerrie
|
||||
En temt haar tot de wildste droom
|
||||
Ay, ay, ay, ay, jouw stille liedjes
|
||||
En ik vrees niet langer
|
||||
Dus dans me naar jouw lippen
|
||||
Zacht in het dauwgras of de geur van
|
||||
Jasmijnthee, jasmijnthee, jasmijnthee in de nacht
|
||||
|
||||
Jasmijnthee in de nacht
|
||||
Jasmijnthee in de nacht
|
||||
Jasmijnthee in de nacht
|
||||
6
data/albums/2013_Bellse_Parese/info.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"links": {
|
||||
"itunes": "https://music.apple.com/nl/album/bellse-parese/727596551",
|
||||
"spotify": "https://open.spotify.com/album/43P3oVt0iMzGcWyQfRuuLQ"
|
||||
}
|
||||
}
|
||||
42
data/albums/2016_Make-up/01_Make-up.lyric
Normal file
@ -0,0 +1,42 @@
|
||||
Lief, lief, lief
|
||||
Schatje doe niet zo naïef
|
||||
Al dat innerlijk vertoon
|
||||
Interesseert me niet
|
||||
|
||||
Ik wil je om je lipstick
|
||||
En om je smokey eyes
|
||||
Je Calvin Klein, Chanel
|
||||
Louis Vuitton, DKNY
|
||||
|
||||
Ik wil je bedrog
|
||||
Jouw Trojaanse paard
|
||||
Als het masker geil genoeg is
|
||||
Is het de afslachting waard
|
||||
|
||||
M.m.m.m.m
|
||||
Make-up
|
||||
|
||||
Lief, lief, lief,
|
||||
Al het franke is fictief
|
||||
Elke weldaad wordt geboren
|
||||
Uit een corrupt motief
|
||||
|
||||
De held smeekt om een oorlog
|
||||
Sherlock om een moord
|
||||
De drukpers smeekt despoten
|
||||
Verban het vrije woord
|
||||
|
||||
Niemand is zo listig
|
||||
Als zij die deugen
|
||||
Niks is zo eerlijk
|
||||
Als een onvervalste leugen
|
||||
|
||||
M.m.m.m.m
|
||||
Make-up
|
||||
|
||||
Verover dus mijn hart
|
||||
Met jouw Trojaanse paard
|
||||
Als het masker geil genoeg is
|
||||
Is het de afslachting waard
|
||||
|
||||
Make-up
|
||||
@ -0,0 +1,54 @@
|
||||
Kieren. Gaten. Uit het lood geslagen
|
||||
Ratten. Kieren. Larven. Gaten
|
||||
Hond. Tot je deugt hok op slot
|
||||
Laat het galmen tot het botst
|
||||
|
||||
Dreun, dreun, het kreupelhout kreunt
|
||||
Een silhouet van een man die op zijn spade leunt
|
||||
Er is iets gaande. Waanzin. Waanzin
|
||||
|
||||
Het is een vloek, een zucht, de diesel in de lucht
|
||||
De maan heeft livor mortis, de versleten waarheid vlucht
|
||||
Het is waanzin. Waanzin. Waanzin
|
||||
|
||||
En ik? Ik ben uw gastheer vannacht
|
||||
Pak mijn hand en dans
|
||||
|
||||
Op het ritme van een dumporkest – Ratta toenkien ka skattatikke koeng koen
|
||||
We drinken wijn uit een gebroken fles – Hup, huhup
|
||||
Een dronken dwaas met een roestige trompet
|
||||
En het orgel spuwt clusters uit de hel
|
||||
Klinkt het niet? Dan botst het wel!
|
||||
|
||||
Tel snel. De druppels bloed goed
|
||||
Liberté is een dikkop met een klompvoet
|
||||
Na mij de zondvloed. Waanzin. Waanzin
|
||||
|
||||
De waarheid ligt in het midden zegt de egocentrist
|
||||
Idealist? Kist dicht!
|
||||
Na mij de zondvloed. Waanzin. Waanzin
|
||||
|
||||
Maar de waanzin breekt uit de grond vannacht
|
||||
Pak mijn hand en dans
|
||||
|
||||
Op het ritme van een dumporkest – Ratta toenkien ka skattatikke koeng koen
|
||||
We drinken wijn uit een gebroken fles – Hup, huhup
|
||||
Een dronken dwaas met een roestige trompet
|
||||
En het orgel spuwt clusters uit de hel
|
||||
Klinkt het niet?
|
||||
Bevrijd jezelf dat is een bevel
|
||||
Klinkt het niet? Dan botst het, botst het, botst het
|
||||
Botst het wel!
|
||||
|
||||
Ratten. Kieren. Larven. Gaten.
|
||||
Boem! Ratatoenkie ka. Skapatikke koen
|
||||
Piepen. Kieren. Kraken. Gaten
|
||||
Boem! Honden die in
|
||||
Tongen Blaffen.
|
||||
Trap de waarheid op de grond
|
||||
Schaadt het niet? Dan baadt het niet!
|
||||
Schaadt het niet. Baadt het niet.
|
||||
Schaadt het niet. Baadt het niet.
|
||||
Rennen. Razen. Rennen. Razen.
|
||||
Rennen. Razen. Rennen. Razen.
|
||||
Halt!
|
||||
45
data/albums/2016_Make-up/03_Omhels_me.lyric
Normal file
@ -0,0 +1,45 @@
|
||||
Er zijn twee manen, de pier is van ijs
|
||||
Ik kijk naar je nu je in de duisternis verdwijnt
|
||||
De wind vergrijpt zich gulzig aan jouw haar
|
||||
Je jurk vlamt als een godheid om je zo volmaakte lijf
|
||||
Dat ik er tranen in mijn ogen van krijg
|
||||
Ik ben van jou en jij van mij. Dat is klaar
|
||||
|
||||
Dus omhels me weer
|
||||
Als een roedel wolven schat
|
||||
Verscheur me met jouw lippen
|
||||
Tot ik snap wat jij bedoelt
|
||||
Omhels me weer
|
||||
Als een anaconda
|
||||
Hoe vaster jouw omhelzing is
|
||||
Hoe vrijer ik me voel
|
||||
|
||||
Het meer is zilver, de nacht heeft geen eind
|
||||
Ik kijk je aan nu je in de duisternis verdwijnt
|
||||
De grond is koud en zacht, je lichaam zwaar
|
||||
De wind gaat liggen, alles is stil
|
||||
Ik kniel, leg je voorzichtig in de ongerepte sneeuw
|
||||
Er is gebeurd wat er is gebeurd. Dat is klaar
|
||||
|
||||
Dus omhels me weer
|
||||
Als een roedel wolven schat
|
||||
Verscheur me met jouw lippen
|
||||
Tot ik snap wat jij bedoelt
|
||||
Omhels me weer
|
||||
Als een anaconda
|
||||
Hoe vaster jouw omhelzing is
|
||||
Hoe vrijer ik me voel
|
||||
|
||||
Ik ben van jou. Jij bent van mij
|
||||
Het is de vallende ster die het helderst schijnt
|
||||
Ik omhels je
|
||||
Zodat je in de duisternis verdwijnt
|
||||
|
||||
Dus omhels me weer
|
||||
Als een roedel wolven schat
|
||||
Verscheur me met jouw lippen
|
||||
Tot ik snap wat jij bedoelt
|
||||
Omhels me weer
|
||||
Als een anaconda
|
||||
Hoe vaster jouw omhelzing is
|
||||
Hoe vrijer ik me voel
|
||||
@ -0,0 +1,66 @@
|
||||
Dames en heren
|
||||
De stilstand gaat maar door
|
||||
U bent verstandig, u bent onwijs verstandig
|
||||
Dus u ziet dat ze altijd inconsequent zijn
|
||||
Ze gaan als een trein maar ze sporen niet
|
||||
En ze zeggen: U bent niet gek
|
||||
Ze zeggen: u bent toch niet gek. Integendeel. U bent wel gek
|
||||
Dus wij zijn tegen. Overal tegen zijn daar zijn we voor
|
||||
De stilstand gaat maar door
|
||||
|
||||
Dames en heren
|
||||
Verlangen we niet allemaal terug naar de progressieve tijden?
|
||||
Laat alles voor de verandering
|
||||
Alles voor de verandering toch
|
||||
Één keer hetzelfde blijven
|
||||
Geen taboes meer. Basta!
|
||||
We verdragen geen intolerantie roep ik eenzaam in koor
|
||||
De stilstand gaat maar door
|
||||
|
||||
Ze zijn vredezuchtig, oorlogslievend
|
||||
Architecten van ruïnes
|
||||
Goed is slecht en slecht is goed
|
||||
Krab de westerse belangen en de hele wereld bloedt
|
||||
Geweld wordt pas taboe wanneer de ander het terug doet
|
||||
Ze hebben zelfs van hun hebzucht niet genoeg
|
||||
Oh jee
|
||||
Ik ben mezelf aan het herhalen maar goed dat deed ik nog nooit eerder
|
||||
En ik bedoel, vernieuwend zijn nee dat is lekker origineel
|
||||
Maar goed. Daar gaat het ook niet om, laat ik voor de vorm maar wat inhoudelijker zijn
|
||||
De stilstand gaat maar door
|
||||
|
||||
Dames en heren
|
||||
Laat de rechtspraak links liggen
|
||||
Want ik deed het in een vlaag van voorbedachte rade, edelachtbare
|
||||
Waarom heeft een koelbloedige despoot meer met zijn gedrag te maken
|
||||
Dan een psychoot?
|
||||
Klop het onheil af op je houten been
|
||||
De rechter heeft geen weegschaal maar een dobbelsteen
|
||||
Waar een wil is, is een weg, waar een wil is, is een weg
|
||||
Hang: “Waar een wil is, is een weg” geketend aan de muur
|
||||
In dezelfde cel als de regendans en het vagevuur.
|
||||
Daar waar de eeuwigheid is overleden
|
||||
Hij was door het exorcisme bezeten
|
||||
Hij ging er aan zijn hoogmoed onderdoor
|
||||
De stilstaand gaat maar door
|
||||
|
||||
De meeste stemmen gelden?
|
||||
Niks is zo democratisch als een groepsverkrachting
|
||||
Onze vrijheid die in de hemel zijt uw naam worde geheiligd
|
||||
Leid ons niet in verzoeking maar zoek ons in de verleiding
|
||||
Van Bangladesh cash, SALE, k-tjing, kijk weg. En zeg: 'Ik kan niet tegen onrecht'
|
||||
Maar onder de tafel strelen we allemaal de dijen van:
|
||||
'Fair Trade mijn reet, je weet dat grote vis de kleine vis eet
|
||||
In de cirkel van het leven zijn zij ook geen haartje beter
|
||||
Groen?
|
||||
Groen is de kleur dat je gas mag
|
||||
Groen is de kleur dat je gas mag geven
|
||||
Als wij het niet doen, doen zij het
|
||||
|
||||
Radicaal gematigd
|
||||
Extreem normaal
|
||||
Het was bedoeld om te mislukken en daarin ben ik geslaagd
|
||||
Ik heb het gemaakt door dingen te slopen
|
||||
Je verdient geen geld met nee verkopen
|
||||
Voor het eerst voor het laatst aan dit gehoor
|
||||
De stilstand gaat maar door
|
||||
30
data/albums/2016_Make-up/05_Aapje_vlooit.lyric
Normal file
@ -0,0 +1,30 @@
|
||||
Jouw ratio is ook maar een emotie
|
||||
Die binnen een ronde knock-out gaat tegen mijn trots
|
||||
Moord, brand, hartstilstand, dat is allemaal niet aan de hand
|
||||
Als je op mijn lange pik trapt, een treetje hoger op de rots
|
||||
Ja, je bent misschien de beste schaker
|
||||
Helaas, hier wordt Mens-erger-je-niet gespeeld
|
||||
|
||||
Hoe vaker je dat aapje vlooit
|
||||
Hoe sneller hij zijn eten met je deelt
|
||||
|
||||
De waarheid is een slaaf van intuïtie
|
||||
Logica de bijbal van instinct
|
||||
Consistent argument? Man ik weet niet wie je bent
|
||||
Zorg dat je op de juiste feestjes met de juiste mensen drinkt
|
||||
En lik eerst alle tranen uit mijn tissue
|
||||
Voordat jouw rede iets beveelt
|
||||
|
||||
Hoe vaker je dat aapje vlooit
|
||||
Hoe sneller hij zijn eten met je deelt
|
||||
|
||||
Je moet een dwaas zijn om te denken
|
||||
Dat ik jou mijn wang toekeer
|
||||
Waarom? Ik heb geen reden nodig
|
||||
Want we zijn met meer
|
||||
|
||||
Want we zijn met meer, want we zijn met meer
|
||||
Want we zijn met meer, want we zijn met meer
|
||||
|
||||
Hoe vaker je dat aapje vlooit
|
||||
Hoe sneller hij zijn eten met je deelt
|
||||
39
data/albums/2016_Make-up/06_Als_tijd_niet_bestaat.lyric
Normal file
@ -0,0 +1,39 @@
|
||||
Een schim onder zijn hoedrand
|
||||
Die in zichzelf praat
|
||||
Ik zal goed voor je zijn
|
||||
Als tijd niet bestaat
|
||||
En de barman vraagt cynisch
|
||||
Wil je ijs bij je tranen?
|
||||
Het hagelt katten op de ruit
|
||||
En de wind klinkt als Wagner
|
||||
De dronkaard zwalkt tussen ooit en toen
|
||||
|
||||
Liefde, mijn liefde
|
||||
Ik wil je, ik wil je
|
||||
Ik wil je wild, ik wil je traag
|
||||
Jouw lach, jouw seks en jouw zoen
|
||||
En al dat soort dingen die mensen doen
|
||||
Als tijd niet bestaat
|
||||
|
||||
Een gezicht als een gedicht
|
||||
Je haar morst op mijn borst, als je me kust
|
||||
Geeft je lichaam licht
|
||||
Maar alle hoop is hier een waan
|
||||
Tussen vloeken en gebeden
|
||||
Geeft de dronkaard zijn dromen en zijn verleden
|
||||
Als een wijze les aan vreemden
|
||||
Ik wend mijn blik af en ik denk aan:
|
||||
|
||||
Liefde, mijn liefde
|
||||
Ik wil je, ik wil je
|
||||
Ik wil je wild, ik wil je traag
|
||||
Jouw lach, jouw seks en jouw zoen
|
||||
En al dat soort dingen die mensen doen
|
||||
Als tijd niet bestaat
|
||||
|
||||
Liefde, mijn liefde
|
||||
Ik wil je, ik wil je
|
||||
Dronken en naakt
|
||||
Tot ons kreunen verdwaalt in een zoen
|
||||
En al dat soort dingen die mensen doen
|
||||
Als tijd niet bestaat
|
||||
@ -0,0 +1,30 @@
|
||||
HÉ! Wat zit je nou te kijken vuile....
|
||||
Ik vind treinen sowieso al beklemmend
|
||||
HÉ! Wat zit je nou te kijken vuile k...
|
||||
Ik vind treinen sowieso al beklemmend.
|
||||
Maar zeker als er op zaterdagnacht iemand naast je komt zitten
|
||||
Terwijl er plaats zat is.
|
||||
Hij is van de kaart. Paardenstaart. Zo'n gore gehavende geitenbaard.
|
||||
Een door de drank gekneveld gebit
|
||||
En een geur alsof je naast een conceptueel kunstwerk zit.
|
||||
Ik heb een tik met mijn neus maar hij werkt niet meer
|
||||
Normaal beweeg ik hem snel van rechts naar links
|
||||
Naar rechts gaat prima maar links blijft hangen.
|
||||
En hij kijkt schichtig om zich heen met van die kraaienogen
|
||||
Totdat zijn ogen blijven hangen in de ogen van een vrouw in de coupé
|
||||
HÉ! Wat zit je nou te kijken vuile...
|
||||
Ik probeer mijn ogen te knipperen maar het werkt niet meer
|
||||
Rechts gaat prima maar links blijft hangen
|
||||
Ik span mijn nekspieren aan. Rechts gaat prima. Links blijft hangen
|
||||
Ik raak in paniek. Mijn adem verhevigt, mijn hart bonst. Ik moet iets doen.
|
||||
Ik neem een slok water. Het druipt er langs mijn linker mondhoek weer uit
|
||||
Ik denk dat ik een beroerte heb gehad. Een TIA. Dat is iets in je hersenen.
|
||||
Er mag niks met mijn hersenen zijn. Als er iets met je hersenen aan de hand is ga je dingen vergeten. Ik mag geen dingen vergeten
|
||||
Er mag niks met mijn hersenen zijn. Ik moet me iets herinneren. Ik probeer me iets te herinneren
|
||||
Het eerste dat ik mij herinner is.
|
||||
Aus. Bei. Mit. Nach. Seit. Von. Zu.
|
||||
Ik vind treinen sowieso al beklemmend
|
||||
Maar zeker als je er op zaterdagnacht achter komt dat de helft van je gezicht verlamd is geraakt
|
||||
En naast je zit iemand die met elke vrouw in de coupé oogcontact zoekt
|
||||
En als hij het heeft. Roept:
|
||||
HÉ! Wat zit je nou te kijken vuile kankerhoer
|
||||
52
data/albums/2016_Make-up/08_Omdat.lyric
Normal file
@ -0,0 +1,52 @@
|
||||
Ik deed het schat, ik deed het schat, ik deed het schat
|
||||
Ik deed het schat, ik deed het schat, (hè)
|
||||
|
||||
Schat, schat. Ik deed het schat, ik deed het schat
|
||||
Schat, schat. Ik deed het schat, omdat
|
||||
Schat, schat. Ik deed het schat, om om
|
||||
Ik deed het schat omdat
|
||||
|
||||
Knip mijn wilde haar
|
||||
Neem mijn beste vriend
|
||||
Sla me als een hond
|
||||
Ik heb het vast verdiend, schat schat, schat schat schat
|
||||
Bijt mijn stembanden door
|
||||
Laat me huilend voor je staan
|
||||
Maar vraag me niet waarom, waarom,
|
||||
Waarom ik het heb gedaan
|
||||
|
||||
Schat, schat. Ik deed het schat, ik deed het schat
|
||||
Schat, schat. Ik deed het schat, omdat
|
||||
Schat, schat. Ik deed het schat, om om
|
||||
Ik deed het schat omdat
|
||||
|
||||
Als ik je eerlijk geef
|
||||
Alle poeha strip
|
||||
Redenen zijn leugens
|
||||
Met magneten voor begrip, gun me dat gelul toch niet
|
||||
Hoezeer ik het ook haten mag
|
||||
De wijsgeer spreekt
|
||||
De straathond blaft
|
||||
Ik deed het schat omdat
|
||||
|
||||
Ik deed het schat, ik deed het schat, ik deed het schat (hè)
|
||||
Ik deed het schat, ik deed het schat, omdat
|
||||
|
||||
Schat, schat. Ik deed het schat, ik deed het schat
|
||||
Schat, schat. Ik deed het schat, om, om
|
||||
Schat, schat. Ik deed het schat, ik deed het schat
|
||||
omdat
|
||||
|
||||
Als ik je eerlijk geef
|
||||
Alle poeha strip
|
||||
Redenen zijn leugens
|
||||
Met magneten voor begrip
|
||||
Je blijft bij me mits Ik hou van je maar
|
||||
Je bleef bij me mits
|
||||
Ik hou van je, ik hou van je
|
||||
En alles loopt mis vanwege
|
||||
|
||||
Daar en daar
|
||||
Toen en toen
|
||||
Die en die
|
||||
Ik deed het schat omdat
|
||||
25
data/albums/2016_Make-up/09_Duizenden_namen.lyric
Normal file
@ -0,0 +1,25 @@
|
||||
Knoopje voor knoopje
|
||||
Open ik trillend haar gordijnen
|
||||
Vuurvliegjes schiet zij
|
||||
Met strelende nagels in mijn dijen
|
||||
Zij heeft duizenden namen en terecht
|
||||
Een drinkplaats waar ooit elke man
|
||||
Zijn dorst heeft gelest
|
||||
|
||||
Het is leeg in haar raam
|
||||
Slechts de nacht en een hijgende zee
|
||||
Ze kleedt me in schuimkoppen
|
||||
Langzaam dein ik met haar mee
|
||||
Zij heet: Onzichtbare Maan en terecht
|
||||
En ze lispelt verlegen, mijn liefje
|
||||
Zit stil en zit recht
|
||||
|
||||
Er verschijnt in haar raam
|
||||
Een schim van de maan door de mist
|
||||
Maar ik rijk ernaar en meteen
|
||||
Is het beeld mij ontglipt
|
||||
Zij heet: Zilveren Vis en terecht
|
||||
Mijn armen zijn leeg
|
||||
En haar raam in de muur is weer weg
|
||||
Mijn armen zijn leeg
|
||||
En haar raam in de muur is weer weg
|
||||
25
data/albums/2016_Make-up/10_Toen_mijn_zoon.lyric
Normal file
@ -0,0 +1,25 @@
|
||||
Toen mijn zoon stopte mij onderdanig te groeten
|
||||
Toen mijn zoon stopte mij onderdanig te groeten
|
||||
Beet ik zijn testikels af
|
||||
|
||||
Elke vrouw bij wie ik langs kom lopen
|
||||
Elke vrouw in ons dorpje bij wie ik langsloop
|
||||
Presenteert mij, presenteert mij haar geslacht
|
||||
|
||||
Aad dat is mijn beste maat
|
||||
Ik betrapte hem gister met mijn vrouw
|
||||
Maar dat is prima, dat is prima
|
||||
Zolang ze maar niet ovuleert
|
||||
|
||||
Bas heeft een erectie
|
||||
Want hij streeft naar mijn positie
|
||||
Maar ik bluf hem af en laat hem nu voor straf
|
||||
Door mijn rughaar woelen
|
||||
|
||||
Toen mijn zoon, toen mijn zoon, toen mijn zoon
|
||||
Stopte mij onderdanig te begroeten
|
||||
Toen mijn zoon, toen mijn zoon, toen mijn zoon
|
||||
Stopte mij onderdanig te begroeten
|
||||
Beet ik zijn
|
||||
Beet ik zijn
|
||||
Beet ik zijn testikels af
|
||||
21
data/albums/2016_Make-up/11_Scherven.lyric
Normal file
@ -0,0 +1,21 @@
|
||||
Mijn dromen spatten als lemmings op de grond
|
||||
Grijnzend telt het onheil de tanden in mijn mond
|
||||
Hoe lang kan ik nog wegkijken
|
||||
Het antwoord blaast niet in de wind
|
||||
Het valt op straat als natte sneeuw
|
||||
Waar het mengt met modder en uitlaatgassen
|
||||
|
||||
Gooi het in duigen
|
||||
Alles kan stuk
|
||||
Scherven brengen geluk
|
||||
|
||||
Ben ik niet eenzaam; dan zijn we wel tweezaam
|
||||
We zijn nog dezelfden maar alles lijkt anders vandaag
|
||||
Van ongezouten naar zouteloos
|
||||
De vallei werd een dal
|
||||
En ik hou van jou als een man die zijn vrouw niet meer aanraakt
|
||||
Omdat hij van haar walgt
|
||||
|
||||
Gooi het in duigen
|
||||
Alles kan stuk
|
||||
Scherven brengen geluk
|
||||
6
data/albums/2016_Make-up/info.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"links": {
|
||||
"itunes": "https://music.apple.com/nl/album/make-up/1072353104",
|
||||
"spotify": "https://open.spotify.com/album/2LUZLG1CjR6CyxBqpeef0w"
|
||||
}
|
||||
}
|
||||
40
data/albums/2018_De_Big_One/01_De_Big_One.lyric
Normal file
@ -0,0 +1,40 @@
|
||||
Oh, de rotsen rollen wild uit hun evenwicht
|
||||
De zon is weerloos van zijn bed gelicht
|
||||
De meren kolken het water uit de wijn
|
||||
De wereldorde was een infectie in het brei
|
||||
|
||||
Het circus rolt de stad in als een vormloze mutant
|
||||
De liederen waaien gevlamd en dissonant
|
||||
Men vreest, men beeft maar ergens wist men dat dit kwam
|
||||
En de vlaggen op de tent spellen
|
||||
De Big One
|
||||
|
||||
Oh, de houvast wordt bleek, uit de schaduw klimt een stem:
|
||||
“Alles dat je weet, zit tussen paradoxen klem”
|
||||
De wijze boeken smelten, de televisie zwijgt
|
||||
In kleuren waar geen visuele cortex grip op krijgt
|
||||
|
||||
En het draait in een hypnose, de betekenis ontspoord
|
||||
De dingen op zich zelf zijn weggezogen uit het woord
|
||||
En de spreekstalmeester groet u zonder rijm of samenhang
|
||||
Maar u kent de reputatie va
|
||||
|
||||
De Big One, De Big One
|
||||
De Big One, De Big One
|
||||
|
||||
Het is de aardbeving, de hartstilstand, de donderslag bij licht
|
||||
De curieuze karavaan die het zelfbeeld ontwricht
|
||||
U wilt de tiet van uw routine maar u voelt de klauwen van
|
||||
De afgrond die zich schuilhoudt in
|
||||
De Big One
|
||||
En alles galmt hoogdravend, obscuur, duister en zwaar
|
||||
Dames en heren, dit is de gezelligste plaat van het jaar
|
||||
Want ja, u wilt escapisme, vermaak, dansend licht
|
||||
Juwelen in de lucht en een lach op het gezicht
|
||||
Waarom de zere plek beroeren?
|
||||
Want de psyche schreeuwt al lang
|
||||
Dat u nooit gaat kunnen vluchten voor
|
||||
De Big One
|
||||
|
||||
Voor De Big One, De Big One
|
||||
Voor De Big One, De Big One
|
||||
51
data/albums/2018_De_Big_One/02_Ah_Rhum_Cha_Cha_Cha.lyric
Normal file
@ -0,0 +1,51 @@
|
||||
Ah Rhum Cha Cha Cha
|
||||
|
||||
Geef me een kus
|
||||
Nu de tent hier in de fik staat
|
||||
Want morgen
|
||||
Begint het weer van voor af aan
|
||||
|
||||
Geef me de rum
|
||||
Dan meng ik het met arsenicum
|
||||
Want er is niks aan
|
||||
Als het niet gruwelijk mis kan gaan
|
||||
|
||||
Verstrengeld op de grond
|
||||
En het bloed in onze monden
|
||||
Kus me nu de tent hier in de fik staat
|
||||
Het is de cirkel van de maan
|
||||
Het kraaien van de haan en morgen
|
||||
Begint het weer van voor af aan
|
||||
|
||||
Ah Rhum Cha Cha Cha
|
||||
|
||||
En onbewust
|
||||
Ben ik al duizend keer gestorven
|
||||
En hoe dat spook
|
||||
Mijn brein nu binnen morst
|
||||
|
||||
Mijn slotapplaus
|
||||
Heeft als een mitrailleur geklonken
|
||||
En mijn buiging
|
||||
Was met het mes op mijn strot
|
||||
|
||||
Verstrengeld op de grond
|
||||
En het bloed in onze monden
|
||||
Kus me nu de tent hier in de fik staat
|
||||
Het is de cirkel van de maan
|
||||
Het kraaien van de haan en morgen
|
||||
Begint het weer van voor af aan
|
||||
|
||||
Want ben je vrij
|
||||
Als je mag dansen in je ketens?
|
||||
Nee, het aapje ontwaakt pas
|
||||
Als het gruwelijk mis kan gaan
|
||||
|
||||
Dus vrij met mij
|
||||
Nu de tent hier in de fik staat
|
||||
Want morgen
|
||||
Begint het weer van voor af aan
|
||||
|
||||
Lalalalala
|
||||
|
||||
Ah Rhum Cha Cha Cha
|
||||
53
data/albums/2018_De_Big_One/03_Al_Het_Licht_Gedoofd.lyric
Normal file
@ -0,0 +1,53 @@
|
||||
Schat, daar gaan we weer
|
||||
Naar die dode stad
|
||||
En al het licht gedoofd
|
||||
Schat, daar gaan we weer
|
||||
|
||||
Ik sleep mijn lege hart
|
||||
Nog een paar passen
|
||||
naar je zwijgende lijf
|
||||
En in je hese schaduwogen is
|
||||
Al het licht gedoofd
|
||||
Schat, daar zijn we weer
|
||||
|
||||
Ik voel het ijs op je huilende handen
|
||||
Maar met je lijf aan mijn lijf duren we weer een lawine langer
|
||||
En al is al het licht gedoofd
|
||||
Al het licht gedoofd
|
||||
|
||||
Aan de oever van het slijk
|
||||
liggen de gedachten
|
||||
Als grommende wilde honden aangelijnd te wachten
|
||||
Tot ze uiteindelijk, onvermijdelijk
|
||||
Hun weg weer zullen bijten naar die dode stad
|
||||
Waar al het licht is het gedoofd
|
||||
Daar zie ik je weer
|
||||
|
||||
Als al het licht is gedoofd
|
||||
|
||||
Kus je het licht weer in mijn ogen
|
||||
Je streelt het denken uit mijn dijen
|
||||
Verleidt engelen te dansen
|
||||
Op het ritme van ons deinen, oh schat
|
||||
In die stad waar het licht is gedoofd
|
||||
Daar zie je me weer
|
||||
|
||||
Ik kus het licht weer in je ogen
|
||||
Streel het denken uit je dijen
|
||||
Verleid engelen te dansen
|
||||
Op het ritme van ons deinen
|
||||
|
||||
Je kust het licht weer in mijn ogen
|
||||
Streelt het denken uit mijn dijen
|
||||
Verleidt engelen te dansen
|
||||
Op het ritme van ons deinen
|
||||
|
||||
Ik kus het licht weer in je ogen
|
||||
Streel het denken uit je dijen
|
||||
Verleid engelen te dansen
|
||||
Op het ritme van ons deinen
|
||||
|
||||
Op het ritme van ons deinen
|
||||
Op het ritme van ons deinen
|
||||
Op het ritme van ons deinen
|
||||
Op het ritme van ons deinen
|
||||
47
data/albums/2018_De_Big_One/04_Vrouwtje.lyric
Normal file
@ -0,0 +1,47 @@
|
||||
Je bent mijn poes
|
||||
Je bent mijn teef
|
||||
Mijn koe, mijn kip
|
||||
Mijn hen, mijn tiet, mijn pop, mijn sik en ik
|
||||
|
||||
Verschijn stinkend naar urine luid schreeuwend ten tonele
|
||||
Ik neem voedsel voor je mee zodat je mij niet op zal eten
|
||||
Ik zal mijn vleugels wrijven in arpeggio’s en akkoorden
|
||||
Ik zal mijn werkers opdracht geven de rivalen te vermoorden
|
||||
|
||||
Je bent mijn bache
|
||||
Je bent mijn zeug
|
||||
Mijn hinde, mijn vooi
|
||||
Mijn kuiter, apin, mijn wijfje en mijn ooi
|
||||
|
||||
En ik: Te klein en mollig, ‘k zal op de eieren gaan passen
|
||||
Tollend met mijn staart tegelijk schijten en plassen
|
||||
En ik lig tot je alleen bent in de bosjes te loeren
|
||||
Ik zal mijn maaginhoud opbraken en het aan je voeren, want je bent
|
||||
|
||||
Bronstig, berig, ritsig, welig
|
||||
Broeds, krols, rams, loops, hengstig en tochtig
|
||||
Bronstig, berig, ritsig, welig
|
||||
Broeds, krols, rams, loops, hengstig en tochtig
|
||||
|
||||
Je bent mijn merrie
|
||||
Je bent mijn moer
|
||||
Duivin, ezelin,
|
||||
Woerhen, kloek, leeuwin, tijgerin
|
||||
|
||||
En ik zal mijn lichaam strekken en naar de hemel brullen
|
||||
Voor je dansen tot je kuit schiet en het nest met mijn hom vullen want je bent
|
||||
|
||||
Bronstig, berig, ritsig, welig
|
||||
Broeds, krols, rams, loops, hengstig en tochtig
|
||||
Bronstig, berig, ritsig, welig
|
||||
Broeds, krols, rams, loops, hengstig en tochtig
|
||||
|
||||
Je bent mijn vrouwtje
|
||||
Je bent mijn vrouwtje
|
||||
Je bent mijn vrouwtje
|
||||
Je bent mijn vrouwtje
|
||||
|
||||
Bronstig, berig, ritsig, welig
|
||||
Broeds, krols, rams, loops, hengstig en tochtig
|
||||
Bronstig, berig, ritsig, welig
|
||||
Broeds, krols, rams, loops, hengstig en tochtig
|
||||
32
data/albums/2018_De_Big_One/05_Nu_Is_Het_Hier.lyric
Normal file
@ -0,0 +1,32 @@
|
||||
Het begint met de smaak van metaal
|
||||
En de geur van vuur
|
||||
Het leeft in de neuronen en het gromt mentaal
|
||||
Maar alles lijkt echt op dit uur
|
||||
|
||||
En nu is het hier, is het hier
|
||||
Nadat het mijn toekomst al mee had genomen
|
||||
Is het nu hier, is het hier
|
||||
Voor mijn dromen
|
||||
|
||||
Een man met een mes zit op me op bed
|
||||
En hij dreigt, hij dreigt
|
||||
De objecten in de kamer krijgen snavels en hamers
|
||||
In een maan die in zwarttinten schijnt
|
||||
|
||||
Nu is het hier, is het hier
|
||||
Nadat het mijn toekomst al mee had genomen
|
||||
Is het nu hier, is het hier
|
||||
Voor mijn dromen
|
||||
Het klopt op de ruit, het grijpt in mijn huid
|
||||
Het beweegt, beweegt
|
||||
De jas in mijn kast is een duistere gast
|
||||
Die via mijn smartphone spreekt:
|
||||
|
||||
“We zijn nu hier, we zijn hier
|
||||
Na het perspectief dat al mee was genomen
|
||||
Zijn we nu hier, zijn we hier gekomen...”
|
||||
|
||||
Nu is het hier, is het hier
|
||||
Nadat het mijn toekomst al mee had genomen
|
||||
Is het nu hier, is het hier, gekomen
|
||||
Voor mijn dromen
|
||||
51
data/albums/2018_De_Big_One/06_Ondergaan.lyric
Normal file
@ -0,0 +1,51 @@
|
||||
De zon verdrinkt in de bergen
|
||||
Ik draag de poten van het beest
|
||||
Het zal wel weer een noodlot vergen
|
||||
Je was hier anders niet geweest
|
||||
|
||||
Ik zie je woede en je vragen
|
||||
Je ambitie, je talent
|
||||
Je kan mijn ogen niet verdragen
|
||||
Omdat je steeds verlaten bent
|
||||
|
||||
Er zijn onnoemelijk veel slangen
|
||||
Maar neem dit van de echte aan
|
||||
De zon was nooit meer opgekomen
|
||||
Als hij niet onder was gegaan
|
||||
|
||||
Laat me je helpen om te sterven
|
||||
Te vervellen, op te staan
|
||||
Want wil je vliegen als een vlinder?
|
||||
Dan zal je zingen als een zwaan
|
||||
|
||||
Ja wil je als de zon opkomen?
|
||||
Dan zal je onder moeten gaan
|
||||
|
||||
Hmmmm, hmmmm
|
||||
Rapoem!
|
||||
Hmmmm, hmmmm, mmmm, Rapoem! Clap!
|
||||
Hmmmm
|
||||
Rapoem! Clap! Wow!
|
||||
Rapoem! Clap! Wow! Rapoem! Clap! Wow!
|
||||
Je bent verblind door de verhalen
|
||||
Van het licht waar je naar streeft
|
||||
Maar geen boom zal ooit de hemel halen
|
||||
Als hij geen diepe wortels heeft
|
||||
|
||||
Dus wil je vliegen, schoon en helder?
|
||||
De sterren proeven in je mond?
|
||||
Omarm de duivels in de kelder
|
||||
Van de donkere, dode grond
|
||||
|
||||
Er zijn onnoemelijk veel slangen
|
||||
Blijf ver van hun verlichting vandaan
|
||||
De zon was nooit meer opgekomen
|
||||
Als hij niet onder was gegaan
|
||||
|
||||
Er zijn onnoemelijk veel slangen
|
||||
Maar neem dit van de echte aan
|
||||
Wil je vliegen als een vlinder?
|
||||
Leer dan sterven als een zwaan
|
||||
|
||||
Ja wil je als de zon opkomen?
|
||||
Dan zal je onder moeten gaan
|
||||
25
data/albums/2018_De_Big_One/07_Opgedroogd.lyric
Normal file
@ -0,0 +1,25 @@
|
||||
De geweren zijn geladen, het maaiveld staat in brand
|
||||
Het is vechten of vluchten en ik sta hier verlamd
|
||||
Ik sluit mezelf weer op in de bunker van mijn hoofd
|
||||
Ik zou willen janken als een baby maar de bron is opgedroog
|
||||
|
||||
Alle gasten bleken gieren, mijn wijf bleek gestoord
|
||||
Hoe kom ik binnen twee keer knipperen in het midden van dit koord?
|
||||
En ik spartel als een vlieg in het spinnenweb in mijn hoofd
|
||||
Ik zou willen janken als een baby maar de bron is opgedroogd
|
||||
En het vangnet is gemaakt van vuisten en vuur
|
||||
Mijn verlaten geraamte slaat zijn hoofd tegen de muur
|
||||
|
||||
Een meter boven het skelet, naast het ziekenhuisbed
|
||||
Met vleugels van vliezen kijkt mijn geest of hij het redt
|
||||
En ze zagen aan mijn voeten, Damocles zegt: “Kijk omhoog”
|
||||
En ik wil alleen maar janken maar de bron is opgedroogd
|
||||
The show must go on met zelfdestructie aan het stuur
|
||||
De klokken lopen huiswaarts, slaan mijn hoofd tegen de muur
|
||||
|
||||
De witte jas machine met zijn robotstem zegt:
|
||||
“Ik zou je broer wel willen helpen maar de dokters zijn defect”
|
||||
En ik sluit mezelf weer op in de ruïne van mijn hoofd
|
||||
Ik zou willen janken als een baby maar de bron is opgedroogd
|
||||
|
||||
Is opgedroogd, is opgedroogd, is opgedroogd
|
||||
42
data/albums/2018_De_Big_One/08_Met_De_Winden_ Mee.lyric
Normal file
@ -0,0 +1,42 @@
|
||||
De wind grijpt in de jas van een oude gek
|
||||
Een afgesneden konijnenpoot om zijn nek
|
||||
Hij zegt: “Of het nu goed is of verkeerd
|
||||
De hond geeft de poot die hem is aangeleerd
|
||||
Ik ben overal geweest, ik heb alles gezien
|
||||
Ik heb mijn ware zelf gevonden op z’n minst een keer of tien
|
||||
Ik dacht fake it till you make it, waar een wil is, is een weg
|
||||
Precies zoals mijn pa dat tegen mij had gezegd
|
||||
|
||||
Oh, ik waaide zo lang met de winden mee
|
||||
Dat ik dacht dat ik zelf de wind was
|
||||
|
||||
Ik ben overal geweest, ik heb elke tijd gezien
|
||||
Ik heb de zon op zien komen in Beijing
|
||||
Ik zag een God die in de donder woont
|
||||
Het goede waar je na je dood voor wordt beloond
|
||||
Ik zag de hemel breken voor een regendans
|
||||
Beulen die zeiden ‘keer de andere wang’
|
||||
En ik riep ‘Deutschland über alles en America is Great’
|
||||
En mijn ego bleef roepen dat hij zelf controle heeft
|
||||
|
||||
Oh, ik waaide zo lang met de winden mee
|
||||
Dat ik dacht dat ik zelf de wind was
|
||||
|
||||
Of het nu goed is, of verkeerd
|
||||
Vrijheid is de dwang die je brein accepteert”
|
||||
De wind krult de bladeren om hem heen
|
||||
Hij zegt: “Ik zag de toekomst in een rune steen
|
||||
De illusies verlicht, de oude Goden gesmoord
|
||||
En bloed kleeft aan het zwaard van het nieuwe ware woord
|
||||
Maar nu weet men zeker dat hij voor beschaving strijdt
|
||||
En er is altijd de gek die zegt: ‘Zo gaat het altijd’
|
||||
|
||||
Oh, ik waaide zo lang met de winden mee
|
||||
Dat ik dacht dat ik zelf de wind was”
|
||||
|
||||
En de zon scheen omdat hij geen keus heeft op het niks nieuws
|
||||
De zon scheen omdat hij geen keus heeft op het niks nieuws*
|
||||
“En ik waaide zo lang met de winden mee
|
||||
Dat ik dacht dat ik zelf de wind was”
|
||||
|
||||
*Parafrase: Samuel Beckett, Murphy
|
||||
58
data/albums/2018_De_Big_One/09_Voodoopopje.lyric
Normal file
@ -0,0 +1,58 @@
|
||||
Oh, zoen me
|
||||
Ik brand, ik smelt alleen nog
|
||||
Voor jou, voor jou
|
||||
Je wil alles met me doen ja
|
||||
En schat ik ben een voodoopopje
|
||||
Voor jou, voor jou
|
||||
|
||||
Dus verlok me, prooi me
|
||||
Flik me en flooi me
|
||||
Bind me vast of vergooi me
|
||||
Maar zoen me
|
||||
Dan ben ik een voodoopopje
|
||||
Voor jou, voor jou
|
||||
|
||||
Er is een lamp in een kalebas
|
||||
De trommels in het hoge gras
|
||||
En we zijn waar de wind wil dat we zijn
|
||||
Er is een vuur, er is tabak en er wordt gedanst
|
||||
Stemmen zwemmen naar een trance
|
||||
En de rum is aan het tongen met mijn brein
|
||||
|
||||
En jij stak met je stralen de maan zo uit het water
|
||||
Je druppelde als een druipsteen naar me toe
|
||||
|
||||
Oh, zoen me
|
||||
Ik brand, ik smelt alleen nog
|
||||
Voor jou, voor jou
|
||||
Je wil alles met me doen ja
|
||||
En schat ik ben een voodoopopje
|
||||
Voor jou, voor jou
|
||||
|
||||
Dus verlok me, prooi me,
|
||||
Flik me en flooi me
|
||||
Bind me vast of vergooi me
|
||||
Maar zoen me
|
||||
Dan ben ik een voodoopopje
|
||||
Voor jou, voor jou
|
||||
|
||||
De bomen zijn van schaduwen gemaakt
|
||||
Je fluisterstem heeft mijn oren aangeraakt
|
||||
Het grijpt in mijn lijf als een visioen
|
||||
De maan in je haren glinstert dichterbij
|
||||
De malagueña is van jou en mij
|
||||
De fakkels vlammen in de wind en de rivier kolkt naar ons toe, oeh
|
||||
|
||||
Zoen me
|
||||
Ik brand, ik smelt alleen nog
|
||||
Voor jou, voor jou
|
||||
Je wil alles met me doen ja
|
||||
Schat ik ben een voodoopopje
|
||||
Voor jou, voor jou
|
||||
|
||||
Verlok me, prooi me,
|
||||
Flik me en flooi me
|
||||
Bind me vast of vergooi me
|
||||
Maar zoen me
|
||||
Dan ben ik een voodoopopje
|
||||
Voor jou, voor jou
|
||||
28
data/albums/2018_De_Big_One/10_Het_Vrije_Westen.lyric
Normal file
@ -0,0 +1,28 @@
|
||||
Oh, jullie die zo democratisch spreken:
|
||||
“Kniel voor de vrijheid anders ben je een terrorist”
|
||||
Maar heb je wel eens naar jouw slachtoffers gekeken?
|
||||
Of was je dronken en heb je die gemist?
|
||||
|
||||
En jij die met je dikke nek om de drukpers geeft
|
||||
“De grens ligt bij geweld,” preek je gedwee
|
||||
Maar voor het gemak de illegale bommen op mijn vaderland vergeet
|
||||
Wil je geen terreur?
|
||||
Stop er dan zelf mee!
|
||||
|
||||
Eerst moeten volken die jij platgooit voor je rijkdom
|
||||
De vrijheid krijgen, jouw wrede vrijheid, af te wijzen
|
||||
|
||||
Ga je echt pochen over hoe vrij het westen is?
|
||||
|
||||
Hoe vrij het westen is
|
||||
Blijkt als ze straffeloos
|
||||
Met drones, embargo’s en napalm
|
||||
Miljoenen vermoordt
|
||||
Het westen vaart zo wel
|
||||
Want buiten haar grenzen
|
||||
Heeft ze nog nooit
|
||||
Van het woord mensenrechten gehoor
|
||||
|
||||
Oh ontken voor één keer niet het rauwe feit
|
||||
Het westen is zo vrij door haar
|
||||
Gewelddadigheid
|
||||
@ -0,0 +1,44 @@
|
||||
Bevrijd de wraakzucht uit de kerker
|
||||
En de wellust uit de kast
|
||||
Zij die uit chaos zijn gerezen
|
||||
Elke hond heeft zijn dag
|
||||
|
||||
En daar komen de begerenden
|
||||
De trotsen, de onterenden
|
||||
De rancuneuzen, nijdigen
|
||||
Crematoren van de lach
|
||||
|
||||
Oh haal je eerzucht onder de zweep vandaan
|
||||
Vlooi de meelij uit je vacht
|
||||
De laatsten staan ver voor jou
|
||||
Elke hond heeft zijn dag
|
||||
|
||||
Dus daar staan de tegendraadsen
|
||||
De stampers en de lammen
|
||||
De blinden, de doofstommen
|
||||
De morelen zonder macht
|
||||
|
||||
En de zwaarmoedigen, opvliegenden
|
||||
De onwelwillenden, de liegenden
|
||||
De galblazers, de saters
|
||||
Elke hond heeft zijn...
|
||||
|
||||
Bevrijd de hartstocht van de zondaar
|
||||
Gooi je vooruitgang overstag
|
||||
En ik hoop dat je hebt genoten, maar
|
||||
Elke hond heeft zijn dag
|
||||
|
||||
Oh heil de gebrokenen, de grievenden
|
||||
De werkelijk vredelievenden
|
||||
De spiegelkijkende hoeders
|
||||
Van het zelfbeklag
|
||||
|
||||
En de vertrapten en de gebruikten
|
||||
De ontkenden en besmuikten
|
||||
De knielenden en de gekromden
|
||||
Elke hond heeft zijn dag
|
||||
|
||||
Bevrijd de wraakzucht uit de kerker
|
||||
En de wellust uit de kast
|
||||
Zij die uit chaos zijn gerezen
|
||||
Elke hond heeft zijn dag
|
||||
70
data/albums/2018_De_Big_One/12_Toevlucht.lyric
Normal file
@ -0,0 +1,70 @@
|
||||
Ik heb mijn toevlucht gezocht
|
||||
Toen ik in de war leek
|
||||
Omdat de wereld bizar bleek
|
||||
Toen heb ik gezocht
|
||||
In de havens, in de kroegen
|
||||
In de heilige boeken
|
||||
Met glanzende vodden
|
||||
Als een sint en als een schoft
|
||||
En ik heb mijn toevlucht gezocht
|
||||
In de nachtclubs en de lijven
|
||||
Van door God gezonden wijven
|
||||
En hun troost die ik kocht
|
||||
Ik heb mijn toevlucht gezocht
|
||||
Na een haatdragend uur
|
||||
Met mijn vuist tegen de muur
|
||||
En mijn ogen van vocht
|
||||
|
||||
Ik heb mijn toevlucht gezocht
|
||||
Maar die vrouwen in mijn armen
|
||||
Mijn opgesneden charme
|
||||
Heb ik net zo goed vergokt
|
||||
En hoe de straten gingen praten
|
||||
De nachten gingen braken
|
||||
De stegen gingen zingen
|
||||
Over de klappen die ik ving
|
||||
Maar dan een schorre saxofoon
|
||||
Bracht die boeren tot zwijgen
|
||||
Het zou de bloeddorst verdrijven
|
||||
Met een kluisterende toon
|
||||
En het ritme in mijn maag
|
||||
De zoen in mijn kraag
|
||||
De hypnose in mijn kop
|
||||
En een band die nooit stopt
|
||||
|
||||
Ik heb mijn toevlucht gezocht
|
||||
Maar het wilde niet baten
|
||||
De winter in de straten
|
||||
Het slapen op mos
|
||||
Maar ik vond plots mijn heil
|
||||
Bij een meisje met ogen
|
||||
Die nog niet waren gebroken
|
||||
Zonder weerhaken en kloven
|
||||
Ze was mooi als een lied
|
||||
Ik was verloren, verliefd
|
||||
De messen gingen slapen
|
||||
In haar nakende bries
|
||||
Maar de stilte verweerde
|
||||
Tot woorden en drank
|
||||
En noem het onrust van een man
|
||||
Maar ik werd er krankzinnig van
|
||||
|
||||
Dus zoek ik weer mijn toevlucht
|
||||
En al maakt het me gek
|
||||
De ware waarde vind je
|
||||
Waar de weerzin wordt gerekt
|
||||
De waanzin die het waard is
|
||||
Om als doel door te gaan
|
||||
Totdat dat luchtkasteel instort
|
||||
En het van voren af aan
|
||||
In het werk, in de liefde
|
||||
Terug naar de bron
|
||||
Onder de toonbank
|
||||
En achter de zon
|
||||
Ach joh, waar je ook zoekt
|
||||
De wereld blijft bizar
|
||||
Maar wie niet in de war is
|
||||
Is pas echt in de war
|
||||
|
||||
Ik heb mijn toevlucht gezocht
|
||||
Mijn toevlucht gezocht
|
||||
31
data/albums/2018_De_Big_One/13_Leve_Onze_Zanger.lyric
Normal file
@ -0,0 +1,31 @@
|
||||
De een zijn uitschot is de ander zijn adel
|
||||
De een zijn hoon, andermans zegepraal
|
||||
De een zijn kerk is de ander zijn Babel
|
||||
Elk gevolg is ook een einde verhaal
|
||||
|
||||
De een zijn kastijder, de ander zijn bevrijder
|
||||
De een zijn ketterij, de ander zijn lust
|
||||
De een zijn maniak is de ander zijn leider
|
||||
De een zijn paranoia is de ander zijn rust
|
||||
|
||||
De een zijn keuze is de ander zijn lot
|
||||
De een zijn duivel, de ander zijn God
|
||||
Moge de almachtige onze pogingen ondersteunen
|
||||
Leve onze zanger. Hoera! Hoera! Hoera!
|
||||
|
||||
De een zijn waan is de ander zijn ervaring
|
||||
Elke meesterstrategie is ook een laaghartige list
|
||||
Elke vredesmissie is een oorlogsverklaring
|
||||
De een zijn vrijheidsstrijder, andermans terrorist
|
||||
De een zijn smaad is de ander zijn ode
|
||||
De een zijn heiligheid is de ander zijn grap
|
||||
De een zijn kracht, de ander zijn dode
|
||||
En elke wijsheid is ook een rode lap
|
||||
|
||||
De een zijn keuze is de ander zijn lot
|
||||
De een zijn duivel, de ander zijn God
|
||||
Moge de almachtige onze pogingen ondersteunen
|
||||
Leve onze zanger. Hoera! Hoera! Hoera
|
||||
|
||||
Moge de almachtige onze pogingen ondersteunen
|
||||
Leve onze zanger. Hoera! Hoera! Hoera!
|
||||
92
data/albums/2018_De_Big_One/14_Preek.lyric
Normal file
@ -0,0 +1,92 @@
|
||||
Vandaag zullen we bidden voor de dolende zielen
|
||||
Die zich nederig smekend in het vagevuur bevinden
|
||||
En hun harten hebben uitgesneden en ze dragen het in hun handen En met hun ogen het kloppen van hun sterfelijkheid aanschouwen Het kloppen van het hart, het hart klopt in hun handen
|
||||
Hun tongen proeven of het zoet is
|
||||
Maar ze proeven alleen bitter
|
||||
En ze zien de grauwe wachter met de sleutels van de afgrond
|
||||
Ze vragen aan die schaduw:
|
||||
“Hoe verdwijnt het bitter?”
|
||||
En ze vragen aan de schaduw:
|
||||
“Hoe maak ik mijn hart lichter?
|
||||
Want straks komt de weegschaal
|
||||
Met enerzijds mijn zondes
|
||||
En anderzijds een veer van licht
|
||||
Hoe kunnen ondermaanse daden
|
||||
Minder wegen dan een veer?”
|
||||
En ze vragen aan de schaduw:
|
||||
“Maak mijn hart toch minder bitter
|
||||
Want dit kloppende orgaan is veel te zwaar, is veel te zwaar” Vandaag zullen we bidden voor de dolende zielen
|
||||
Vandaag zullen we bidden voor de dolende zielen Die tussen gerechtigheid en mededogen
|
||||
Een touw zien gespannen
|
||||
Met de gouden poort aan de overzijde
|
||||
En de vlammen beneden
|
||||
Een naamloze massa die wacht hoe zij de oversteek gaan nemen
|
||||
En bovenzijds een loopbrug waar duur geklede zondaars met ongewogen harten hun vrije oversteek mogen nemen
|
||||
Zichtbaar voor het oog, te ver om de sprong te wagen
|
||||
Vandaag zullen we bidden voor de dolende zielenVandaag zullen we bidden voor de dolende zielen Hun hart huilt in hun handen
|
||||
|
||||
Hun hart vraagt: “Was ik zo slecht
|
||||
|
||||
Wie zegt me wat ik verkeerd heb gedaan?” Vandaag zullen we bidden voor de dolende zielen
|
||||
Vandaag zullen we bidden voor de dolende zielen
|
||||
Wanneer aarde aan het barsten is
|
||||
En de schuldvraag gonst in een storm van wilde krekels
|
||||
De donder en de bliksem en natuurlijk is er regen
|
||||
De grauwe wachter met de sleutels van de afgrond buldert:
|
||||
“Schuldig!”
|
||||
De grauwe wachter met de sleutels van de afgrond buldert:
|
||||
“Schuldig, schuldig, schuldig!”
|
||||
En de huilende harten smeken:
|
||||
“Schuldig dan van wat?
|
||||
Wat hebben wij misdaan..? Wat hebben wij misdaan?”
|
||||
De grauwe wachter buldert:
|
||||
“Schuldig zijn de melaatsen
|
||||
Uw sombere hart heeft uw lichaam verzwakt
|
||||
U bent onrein, u bent walgelijk
|
||||
Schuldig zijn de ongelovigen en de afgodenaanbidders
|
||||
God verplettert de hoofden van zijn vijanden
|
||||
De harige kruinen van wie met schuld zijn beladen, jullie voeten zullen waden in jullie eigen bloed, met hun tongen zullen jullie honden ervan likken Schuldig zijn de vrouwen, gij koeien van Basal
|
||||
Die zich in de nachtmerrie der verlichting aan de man gelijk wanen
|
||||
Schuldig zijn de mannen die met mannen liggen
|
||||
U begaat een gruwel
|
||||
Uw bloed is op u en u zult zeker ter dood worden gebracht
|
||||
Schuldig zijn de ontslagen slaven die hun vrouw en kind niet willen verlaten U zult worden verminkt door een priem die door uw oor worde geslagen Schuldig is hij die zijn eerst geboren zoon niet aan de Heer offert
|
||||
Schuldig is hij die overspel pleegt
|
||||
Zijn bloed is op hem
|
||||
Dieven, hebzuchtigen, dronkaards en afpersers
|
||||
U zult allen Gods Koninkrijk niet erven”
|
||||
Vandaag zullen we bidden voor de dolende zielen
|
||||
De dag van de HEER breekt aan, meedogenloos, grimmig, in brandende toorn Het land zal in een woestenij veranderen
|
||||
De zondaars die er wonen verdelgt hij
|
||||
Wie gegrepen wordt, zal doorstoken worden, wie weggevoerd wordt
|
||||
zal omkomen door het zwaard
|
||||
|
||||
Hun kinderen worden voor hun ogen doodgeslagen,
|
||||
hun huizen geplunderd, hun vrouwen verkracht
|
||||
En hij die zich opstandig weet zal omkomen in de strijd, zijn kleine kinderen zullen worden doodgeslagen, zijn zwangere vrouw opengereten
|
||||
De dag van de Heer breekt aan meedogenloos, grimmig, in brandende toorn En daar zien wij de doden...
|
||||
Door de zeeën opgebraakt uit de graven gebarsten
|
||||
Staande voor een troon en er worden boeken geopend
|
||||
En de doden worden geoordeeld
|
||||
En ze kijken in de afgrond
|
||||
En de brandende toorn kolkt als lava in de diepte
|
||||
En de zondaars kijken angstig in de diepte
|
||||
En wij kunnen wel bidden voor de dolende zielen Maar zijn wij zelf niet even zondig?
|
||||
Zijn wij zelf niet even schuldig?
|
||||
Is ons bloed niet op ons?
|
||||
Staan wij daar zelf niet voor de afgrond?
|
||||
Angstig op het touw met de brandende toorn onder ons?
|
||||
Kunnen wij onze ogen wel afhouden van de weerzinwekkende diepte? De schaduw met de sleutels heeft onze hel geopend
|
||||
Wij zijn schuldig, schuldig, schuldig!
|
||||
En u kunt niet langer wegkijken voor het vuur
|
||||
U kunt niet langer wegkijken voor het vuur
|
||||
U kunt niet langer wegkijken voor het vuur
|
||||
En we worden allen in de poel des vuurs geworpen
|
||||
Hooghartig hebben we gebeden voor de dolende zielen Maar niemand zal nog bidden voor onze grote schuld
|
||||
En we worden gewogen en onze harten te zwaar bevonden En we worden door de brandende toorn des almachts
|
||||
In de poel des vuurs geworpen
|
||||
We worden door de almacht
|
||||
In de poel des vuurs geworpen
|
||||
In de poel des vuurs geworpen
|
||||
In de poel des vuurs geworpen
|
||||
Ga heen in de vrede van De Big On
|
||||
6
data/albums/2018_De_Big_One/info.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"links": {
|
||||
"itunes": "https://music.apple.com/nl/album/de-big-one/1436687871",
|
||||
"spotify": "https://open.spotify.com/album/2NwvZ1rxeSqzTArutucUNP"
|
||||
}
|
||||
}
|
||||
105
data/cohen_tour.csv
Normal file
@ -0,0 +1,105 @@
|
||||
date;city;venue;link;flags
|
||||
2019-08-30;Ede;Cultura;;PREVIEW
|
||||
2019-09-06;Alkmaar;TAQA Theater De Vest;;PREVIEW
|
||||
2019-09-07;Naaldwijk;WestlandTheater De Naald;;PREVIEW
|
||||
2019-09-27;Naaldwijk;WestlandTheater De Naald;https://www.westlandtheater.nl/programma/3429/Flip_en_De_Noormannen/Flip_Noorman_zingt_Leonard_Cohen_try_out_/;TRYOUT
|
||||
2019-09-28;Den Haag;PEPER festival;https://denhaag.com/nl/event/109470/peper;SOLO
|
||||
2019-10-04;Gorinchem;'t Pand;http://theaterpand.nl/2019-2020/voorstellingen_okt.php;TRYOUT,UITVERKOCHT
|
||||
2019-10-05;Enschede;De Kleine Willem;https://www.wilminktheater.nl/programma/!/4971/flip-noorman/flip-noorman-zingt-leonard-cohen/;TRYOUT
|
||||
2019-10-12;Almelo;Theater HOF;https://www.hof88.nl/theater/flip-noorman-zingt-leonard-cohen-flip-noorman/12-10-2019-20-15/;TRYOUT,XL
|
||||
2019-10-19;Alkmaar;TAQA Theater De Vest;https://theaterdevest.nl/tickets/seizoen-2019-2020/flip-noorman-flip-noorman-zingt-leonard-cohen/;TRYOUT,XL,UITVERKOCHT
|
||||
2019-10-20;Rotterdam;Kantine Walhalla;https://walhalla.stager.nl/web/tickets/274249;PREMIERE,XL
|
||||
2019-10-27;Oosterhout;Theater de Bussel;https://www.theaterdebussel.nl/programma/2319/Zingt_Leonard_Cohen/Flip_Noorman/;
|
||||
2019-11-02;Oisterwijk;Cultuurcentrum de Tiliander;https://getaticket.nl/tiliander/bestellen/s2045;
|
||||
2019-11-03;Alkmaar;Vest in de stad festival;https://theaterdevest.nl;SOLO
|
||||
2019-11-07;Meppel;Schouwburg Ogterop;https://www.schouwburgogterop.nl/bestel/3185;UITVERKOCHT
|
||||
2019-11-08;Enkhuizen;De Drommedaris;https://tickets.drom.nl/shop/tickets.php?showid=544;UITVERKOCHT
|
||||
2019-11-16;Amsterdam;De Meervaart;https://www.meervaart.nl/theater/programma/details/611/flip-noorman-flip-noorman-zingt-leonard-cohen;UITVERKOCHT
|
||||
2019-11-23;Weesp;City of Wesopa;https://wesopa.nl/city/agenda/;UITVERKOCHT
|
||||
2019-11-30;Houten;Theater Aan De Slinger;;UITVERKOCHT
|
||||
2019-12-07;Ede;Cultura;https://www.cultura-ede.nl/theater/agenda/flip-noorman--leonard-cohen.aspx;XL, UITVERKOCHT
|
||||
2019-12-13;Diemen;Theater De Omval;https://www.theaterdeomval.nl/voorstellingen/?id=1220;UITVERKOCHT
|
||||
2019-12-18;Zoetermeer;Stadstheater;https://www.stadstheater.nl/s73964/Flip_Noorman_Flip_Noorman_zingt_Leonard_Cohen;UITVERKOCHT
|
||||
2019-12-19;Hoofddorp;Het Oude Raadhuis;https://hetcultuurgebouw.ticketmatic.com/addevent.php?a=cvdbQmUEQ3U&e=RH26sUZzeik&s=80cswBbInpo&l=nl&_ga=2.6726582.546457680.1559242849-850583459.1523895503;UITVERKOCHT
|
||||
2019-12-20;Nieuwegein;DE KOM;https://www.dekom.nl/agenda/3661/Flip_Noorman/Flip_Noorman_zingt_Leonard_Cohen/;UITVERKOCHT
|
||||
2019-12-28;Veghel;De Blauwe Kei;https://www.blauwekei.nl/programma/4443/Zingt_Leonard_Cohen/Flip_Noorman/?type=show;UITVERKOCHT
|
||||
2020-01-10;Alphen aan den Rijn ;Theater Castellum;https://theatercastellum.nl/s72834/Flip_Noorman_Zingt_Leonard_Cohen;UITVERKOCHT
|
||||
2020-01-11;Gouda;De Goudse Schouwburg;;UITVERKOCHT
|
||||
2020-01-12;Ritthem;Theater de Verwachting;https://tickets.theatersaanzee.com/nl-NL/Show/Details/Flip-Noorman-Flip-Noorman-zingt-Leonard-Cohen-12-jan-24163;UITVERKOCHT
|
||||
2020-01-17;Deventer;Deventer Schouwburg;https://apps.ticketmatic.com/widgets/deventer_schouwburg/addtickets?edit=yes&event=14523&extraevents=14521&flow=basketwithcheckout&l=nl&oncompletion=orderdetail&panels=customer,delivery,payment,voucher&reservemoretickets=yes&returnurl=https://deventerschouwburg.nl&saleschannelid=2&skinid=1&withauthentication=no&accesskey=315dbd6be362a7ea0d5bd731&signature=d32b335aee3726b15f88cf80c5cf8342e83fd8bb58db59a3eb2c6b82de82807f&_ga=2.214948382.86549655.1559243304-1344454272.1559243304#!/addtickets;UITVERKOCHT
|
||||
2020-01-23;Gouda;De Goudse Schouwburg;https://www.goudseschouwburg.nl/voorstellingen/3958//Flip_Noorman_zingt_Leonard_Cohen/;UITVERKOCHT
|
||||
2020-01-25;Vianen;Theater Vianen;https://www.theatervianen.nl/seizoen-2019-2020/flip-noorman-zingt-leonard-cohen/;UITVERKOCHT
|
||||
2020-01-29;Beusichem;Het Heerenlogement;https://theaterheerenlogement.nl/voorstellingen/?hilite=%27flip%27%2C%27noorman%27;UITVERKOCHT
|
||||
2020-02-01;Waalwijk;Theater de Leest;https://www.deleest.nl/bestel/6227;UITVERKOCHT
|
||||
2020-02-06;Emmeloord;Theater 't Voorhuys;https://www.theater-voorhuys.nl/agenda/4944/zingt_Leonard_Cohen/Flip_Noorman/?type=show;UITVERKOCHT
|
||||
2020-02-08;Utrecht;Stadsschouwburg;https://tickets.stadsschouwburg-utrecht.nl/nl/perf/2019-0208B1;XL,UITVERKOCHT
|
||||
2020-02-13;Leeuwarden;De Harmonie;https://apps.ticketmatic.com/widgets/de_harmonie/addtickets?event=26655&skinid=10000&returnurl=https%3A%2F%2Fharmonie.nl%2Fn%2Fagenda_return_tm&edit=yes&l=nl&extraevents=26921&reservemoretickets=yes&withauthentication=no&oncompletion=orderdetail&flow=basketwithcheckout&accesskey=2ea02106e4411f55e0e2e681&signature=dd3929be39d8cb47cb53d76a4d376424951322baf3981963cb263a83568d244c&_ga=2.138838516.672648337.1568033858-1929889804.1568033858#!/addtickets;XL,UITVERKOCHT
|
||||
2020-02-21;Dordrecht;Energiehuis, Machine;https://apps.ticketmatic.com/widgets/kunstmin/addtickets?event=12495&flow=basketwithcheckout&l=nl&oncompletion=orderdetail&returnurl=https%3A%2F%2Fwww.kunstmin.nl%2Fprogramma%2Fflip-noorman%2F&saleschannelid=10000&skinid=1&accesskey=a03da7ecff7ea4ac81408d6b&signature=f8c5f334acdfe6a6e037711569fc24617d558fefdfc919f900bd2bab0ccfe674#!/addtickets;UITVERKOCHT
|
||||
2020-03-09;Amsterdam;De Kleine Komedie;https://www.dekleinekomedie.nl/mijntheater/winkelmandje/;XL,UITVERKOCHT
|
||||
2020-09-03;Rotterdam;Batavierhuis;https://www.batavierhuis.nl/concerten/;
|
||||
2020-09-12;Borne;Kulturhus De Bijenkorf;https://www.kulturhusborne.nl/;
|
||||
2020-09-12;Borne;Kulturhus De Bijenkorf;https://www.kulturhusborne.nl/;
|
||||
2020-09-24;Apeldoorn;Theater Orpheus;https://www.orpheus.nl;
|
||||
2020-10-01;Schiedam;Theater aan de Schie;https://www.theateraandeschie.nl;
|
||||
2020-10-02;Barendrecht;Theater Het Kruispunt;https://www.theaterhetkruispunt.nl;
|
||||
2020-10-04;Zeist;Oosterkerk;;
|
||||
2020-10-09;Almere;Kunstlinie Almere Flevoland;https://www.kaf.nl;
|
||||
2020-10-09;Almere;Kunstlinie Almere Flevoland;https://www.kaf.nl;
|
||||
2020-10-10;Coevorden;Theater Hofpoort;https://www.theaterhofpoort.nl;
|
||||
2020-10-10;Coevorden;Theater Hofpoort;https://www.theaterhofpoort.nl;
|
||||
2020-10-11;Den Bosch;Verkadefabriek;https://www.verkadefabriek.nl;
|
||||
2020-10-11;Den Bosch;Verkadefabriek;https://www.verkadefabriek.nl;
|
||||
2020-10-16;Breda;Chassé Theater;https://www.chasse.nl;
|
||||
2020-10-17;Hoofddorp;Schouwburg De Meerse;https://www.demeerse.nl;
|
||||
2020-10-17;Hoofddorp;Schouwburg De Meerse;https://www.demeerse.nl;
|
||||
2020-10-22;Capelle a/d IJssel;Isala Theater;https://www.isalatheater.nl;
|
||||
2020-10-24;Purmerend;Theater de Purmaryn;https://www.depurmaryn.nl;
|
||||
2020-10-24;Purmerend;Theater de Purmaryn;https://www.depurmaryn.nl;
|
||||
2020-10-25;Zeist;Oosterkerk;;
|
||||
2020-10-31;Roosendaal;De Kring;https://www.dekringroosendaal.nl;
|
||||
2020-11-01;Haarlem;Philharmonie;https://www.theater-haarlem.nl;
|
||||
2020-11-05;Oss;De Lievekamp;https://www.lievekamp.nl;
|
||||
2020-11-07;Eindhoven;MG Frits Philips;https://www.muziekgebouweindhoven.nl;
|
||||
2020-11-07;Eindhoven;MG Frits Philips;https://www.muziekgebouweindhoven.nl;
|
||||
2020-11-08;Zwolle;Odeon, Hanzestrohmzaal;https://www.zwolsetheaters.nl;
|
||||
2020-11-13;Woerden;Het Klooster Theater;https://www.kloosterwoerden.nl;
|
||||
2020-11-14;Brielle;BREStheater;https://www.brestheater.nl;
|
||||
2020-11-14;Brielle;BREStheater;https://www.brestheater.nl;
|
||||
2020-11-19;Amersfoort;Theater De Lieve Vrouw;https://www.lievevrouw.nl;
|
||||
2020-11-19;Amersfoort;Theater De Lieve Vrouw;https://www.lievevrouw.nl;
|
||||
2020-11-20;Noordwijk;De Muze;https://www.demuzenoordwijk.nl;
|
||||
2020-11-20;Noordwijk;De Muze;https://www.demuzenoordwijk.nl;
|
||||
2020-11-28;Amsterdam;De Kleine Komedie;https://www.dekleinekomedie.nl;
|
||||
2020-11-28;Amsterdam;De Kleine Komedie;https://www.dekleinekomedie.nl;
|
||||
2021-07-02;Heeswijk Dinther;De Kersouwe;https://kersouwe.nl/agenda/flip-noorman-zingt-leonard-cohen;XL
|
||||
2021-07-10;Sommelsdijk;Hofstede Lust en Last;http://lustenlast.nl;DUO
|
||||
2021-07-23;Waalwijk;Stadstuinsessies;https://www.deleest.nl/theater/stadstuin-sessies/23-07-2021-20-30/;DUO
|
||||
2021-07-24;Alkmaar;Theater de Vest;https://theaterdevest.nl/tickets/seizoen-2020-2021/zomer-op-het-plein-flip-noorman-zingt-leonard-cohen/;XL
|
||||
2021-09-09;Breda;Chassé Theater;https://www.chasse.nl/programma/974/Flip_Noorman/zingt_Leonard_Cohen;
|
||||
2021-09-11;Zeist;Oosterkerk;https://podium-beaufort.nl/evenementen/flip-noorman-11-sep/;UITVERKOCHT
|
||||
2021-09-17;Hoofddorp;Schouwburg de Meerse;https://www.demeerse.nl/agenda/flip-noorman/;
|
||||
2021-09-18;Oss;De Lievekamp;https://www.lievekamp.nl;
|
||||
2021-09-23;Amersfoort;De Lieve Vrouw;https://lievevrouw.nl/producties/theater/nov-2021/flip-noorman-zingt-leonard-cohen/;
|
||||
2021-09-24;Gramsbergen;Bostheater;https://www.voorveghter.nl/programma/zingt-leonard-cohen;
|
||||
2021-10-01;Roosendaal;De Kring;https://www.dekringroosendaal.nl/agenda/97/Flip_Noorman/zingt_Leonard_Cohen/;
|
||||
2021-10-02;Capelle aan den Ijssel;Isala;https://www.isalatheater.nl/agenda;
|
||||
2021-10-07;Noordwijk;De Muze;https://theaterdemuze.nl;
|
||||
2021-10-08;Heerenveen;Posthuis Theater;https://www.posthuistheater.nl/agenda/1641/Flip_Noorman_en_De_Noormannen/Flip_Noorman_zingt_Cohen;
|
||||
2021-10-09;Abcoude;Theater Piet Mondriaan;https://theaterpietmondriaan.nl/voorstelling/?id=3305;
|
||||
2021-10-10;Zwolle;Schouwburg Odeon;https://zwolsetheaters.nl/programma/flip-noorman-zingt-leonard-cohen;
|
||||
2021-10-13;Winschoten;Cultuurhuis de Klinker;https://www.indeklinker.nl;
|
||||
2021-10-15;Amstelveen;Cultuurcentrum Griffioen;https://griffioen.vu.nl/voorstellingen/;
|
||||
2021-10-22;Nijkerk;Theater de Breede Beek;;
|
||||
2021-10-28;Raalte;Hoftheater;https://www.hoftheater.nl/programma/performance?performanceId=601&Flip-Noorman-Zingt-Leonard-Cohen;UITVERKOCHT
|
||||
2021-10-29;Amerongen;Cultuurhuis;;
|
||||
2021-10-30;Brielle;BREStheater;https://www.brestheater.nl/voorstelling/seizoen-20202021.html;
|
||||
2021-10-31;Haarlem;Philharmonie;https://www.theater-haarlem.nl/programma/17737//Flip_Noorman_zingt_Leonard_Cohen;UITVERKOCHT
|
||||
2021-11-01;Lisse;Theater Floralis;https://www.floralislisse.nl/movies/692/17/flip_noorman_-_flip_noorman_zingt_leonard_cohen;
|
||||
2021-11-05;Woerden;Het Kloostertheater;https://www.kloosterwoerden.nl;
|
||||
2021-11-06;Eindhoven ;muziekgebouw;https://www.muziekgebouweindhoven.nl/nl/agenda/3029/Hommage_aan_de_grootheid/_Flip_Noorman_zingt_Leonard_Cohen_/;
|
||||
2021-11-10;Den Haag;Theater Diligentia;https://www.diligentia-pepijn.nl;
|
||||
2021-11-13;Amersfoort;Theater de Lieve Vrouw; https://lievevrouw.nl/producties/theater/nov-2021/flip-noorman-zingt-leonard-cohen/;
|
||||
2021-11-19;Voorburg;Theater Ludens;https://theaterludens.nl/voorstellingen/flip-noorman-zingt-leonard-cohen/;
|
||||
2021-11-20;Leiden;Leidse Schouwburg;https://leidseschouwburg-stadsgehoorzaal.nl/voorstelling/flip-noorman-zingt-leonard-cohen;
|
||||
2021-11-26;Purmerend;Theater de Purmaryn;https://depurmaryn.nl/programma-2122/flip-noorman-zingt-leonard-cohen/;
|
||||
2021-11-28;Amsterdam;De Kleine Komedie;https://www.dekleinekomedie.nl/agenda/1829/Flip_Noorman_zingt_Cohen_reprise_/FLIP_NOORMAN;
|
||||
|
0
data/config/.keep
Normal file
0
data/db/.keep
Normal file
18
data/loveit_tour.csv
Normal file
@ -0,0 +1,18 @@
|
||||
date;city;venue;link;flags
|
||||
2022-04-02;Rotterdam;Batavierhuis 2 to 2 fest (duo show met Vera van der Bie);https://www.batavierhuis.nl/2-to-2-fest/;
|
||||
2022-04-03;Rotterdam;Heerenhuys (duo show met Vera van der Bie);https://www.heerenhuyskamerconcerten.nl/voorstelling/love-it-door-flip-noorman/;
|
||||
2022-04-30;Amsterdam;Mascini (duo show met Vera van der Bie);https://www.theatermascini.nl/theater/126-flip-noorman?datum=20220430;
|
||||
2022-05-06;Spijkenisse;Theater de Stoep;https://theaterdestoep.nl/voorstelling/flip-noorman-2122;
|
||||
2022-05-11;Deventer;Deventer Schouwburg;https://deventerschouwburg.nl/programma/flip-noorman-love-it;
|
||||
2022-05-13;Meppel;Schouwburg Ogterop;https://www.schouwburgogterop.nl/programma/flip-noorman-love-it/13-05-2022-20-15;
|
||||
2022-05-20;Wageningen;Junushoff Theater;https://www.junushoff.nl/programma/7074/Flip_Noorman/Love_it_;
|
||||
2022-05-21;Naarden Vesting;Cultuurcentrum deMess;;
|
||||
2022-05-26;Amsterdam;Theater Bellevue;https://www.theaterbellevue.nl/agenda/3639/Flip_Noorman/Love_it_;
|
||||
2022-05-27;Amsterdam;Theater Bellevue;https://www.theaterbellevue.nl/agenda/3639/Flip_Noorman/Love_it_;
|
||||
2022-05-28;Amsterdam;Theater Bellevue;https://www.theaterbellevue.nl/agenda/3639/Flip_Noorman/Love_it_;
|
||||
2022-06-01;Zoetermeer;Stadstheater;https://stadstheater.nl/s81105/Flip_Noorman_Love_it;
|
||||
2022-06-02;Amsterdam;De Meervaart;https://www.meervaart.nl/theater/programma/details/1987;
|
||||
2022-06-03;Den Haag;Theater Pepijn;https://www.diligentia-pepijn.nl/agenda/3785/Love_It_/Flip_Noorman;
|
||||
2022-06-15;Nijmegen;Concertgebouw;https://www.stadsschouwburgendevereeniging.nl/programma/5854/Flip_Noorman/Love_it_;
|
||||
2022-06-17;Oosterhout;De Bussel;;
|
||||
2022-06-18;Rotterdam;Kantine Walhalla (première);https://www.theaterwalhalla.nl/voorstelling/flip-noorman-love-it/;
|
||||
|
99
db.go
Normal file
@ -0,0 +1,99 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"path"
|
||||
"time"
|
||||
|
||||
"github.com/gofrs/uuid"
|
||||
"github.com/jinzhu/gorm"
|
||||
_ "github.com/jinzhu/gorm/dialects/sqlite"
|
||||
)
|
||||
|
||||
const (
|
||||
PRE_ORDER_STATE_CREATED = "CREATED"
|
||||
)
|
||||
|
||||
func initDB() (*gorm.DB, error) {
|
||||
log.Printf("Connect to DB on path: %v", path.Join(ROOT_DIR, "data/db/data.db"))
|
||||
db, err := gorm.Open("sqlite3", path.Join(ROOT_DIR, "data/db/data.db"))
|
||||
// Enable Logger, show detailed log
|
||||
db.LogMode(true)
|
||||
return db, err
|
||||
}
|
||||
|
||||
type Product struct {
|
||||
gorm.Model
|
||||
Name string
|
||||
Image string
|
||||
Description string
|
||||
Price int
|
||||
}
|
||||
|
||||
type Item struct {
|
||||
gorm.Model
|
||||
ProductID uint
|
||||
Product Product
|
||||
PreOrderID uuid.UUID
|
||||
PreOrder PreOrder
|
||||
}
|
||||
|
||||
type MolliePayment struct {
|
||||
gorm.Model
|
||||
MolliePaymentID string
|
||||
Amount int
|
||||
Status string
|
||||
PreOrderID uuid.UUID
|
||||
PreOrder PreOrder
|
||||
}
|
||||
|
||||
type PreOrder struct {
|
||||
ID uuid.UUID `sql:"type:string;primary_key;"`
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
DeletedAt *time.Time `sql:"index"`
|
||||
Name string
|
||||
Email string
|
||||
Items []Item
|
||||
Address string
|
||||
Postcode string
|
||||
City string
|
||||
Status string
|
||||
MolliePayments []MolliePayment
|
||||
}
|
||||
|
||||
func (base *PreOrder) BeforeCreate(scope *gorm.Scope) error {
|
||||
uuid, err := uuid.NewV4()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return scope.SetColumn("ID", uuid.String())
|
||||
}
|
||||
|
||||
func (po *PreOrder) CalcTotal() int {
|
||||
total := 0
|
||||
|
||||
for _, i := range po.Items {
|
||||
total += i.Product.Price
|
||||
}
|
||||
|
||||
return total
|
||||
}
|
||||
|
||||
func GetDB() *gorm.DB {
|
||||
db, err := initDB()
|
||||
|
||||
if err != nil {
|
||||
panic("failed to connect database")
|
||||
}
|
||||
|
||||
// Migrate the schema
|
||||
db.AutoMigrate(
|
||||
&Product{},
|
||||
&Item{},
|
||||
&PreOrder{},
|
||||
&MolliePayment{},
|
||||
)
|
||||
|
||||
return db
|
||||
}
|
||||
0
dist/.keep
vendored
Normal file
196
events.go
Normal file
@ -0,0 +1,196 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/csv"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type MyTime time.Time
|
||||
|
||||
func (mt *MyTime) UnmarshalJSON(b []byte) error {
|
||||
s := strings.Trim(string(b), "\"")
|
||||
t, err := time.Parse("2006-01-02", s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*mt = MyTime(t)
|
||||
return nil
|
||||
}
|
||||
|
||||
func ParseDate(b string) MyTime {
|
||||
s := strings.Trim(b, "\"")
|
||||
t, err := time.Parse("2006-01-02", s)
|
||||
if err != nil {
|
||||
return MyTime{}
|
||||
}
|
||||
return MyTime(t)
|
||||
}
|
||||
|
||||
func (mt *MyTime) ParseDate(b []byte) error {
|
||||
s := strings.Trim(string(b), "\"")
|
||||
t, err := time.Parse("2006-01-02", s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*mt = MyTime(t)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mt MyTime) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(mt)
|
||||
}
|
||||
|
||||
var months = map[string]string{
|
||||
"1": "Jan",
|
||||
"2": "Feb",
|
||||
"3": "Mrt",
|
||||
"4": "Apr",
|
||||
"5": "Mei",
|
||||
"6": "Jun",
|
||||
"7": "Jul",
|
||||
"8": "Aug",
|
||||
"9": "Sept",
|
||||
"10": "Okt",
|
||||
"11": "Nov",
|
||||
"12": "Dec",
|
||||
}
|
||||
|
||||
var monthsLong = map[string]string{
|
||||
"1": "Januari",
|
||||
"2": "Februari",
|
||||
"3": "Maart",
|
||||
"4": "April",
|
||||
"5": "Mei",
|
||||
"6": "Juni",
|
||||
"7": "July",
|
||||
"8": "Augustus",
|
||||
"9": "September",
|
||||
"10": "Oktober",
|
||||
"11": "November",
|
||||
"12": "December",
|
||||
}
|
||||
|
||||
func (mt MyTime) Format() string {
|
||||
t := time.Time(mt)
|
||||
return fmt.Sprintf("%v %v %v", t.Format("02"), months[t.Format("1")], t.Format("2006"))
|
||||
}
|
||||
|
||||
func (mt MyTime) Title() string {
|
||||
t := time.Time(mt)
|
||||
return fmt.Sprintf("%v %v", monthsLong[t.Format("1")], t.Format("2006"))
|
||||
}
|
||||
|
||||
type EventFlags struct {
|
||||
Soldout bool
|
||||
Tryout bool
|
||||
Premiere bool
|
||||
Preview bool
|
||||
XL bool
|
||||
Solo bool
|
||||
Duo bool
|
||||
}
|
||||
|
||||
type Event struct {
|
||||
Date MyTime `json:"date"`
|
||||
Venue string `json:"venue"`
|
||||
City string `json:"city"`
|
||||
Link string `json:"link"`
|
||||
Flags EventFlags `json:"flags"`
|
||||
}
|
||||
|
||||
func (e *Event) SetFlags(flags string) {
|
||||
for _, flag := range strings.Split(flags, ",") {
|
||||
switch strings.Trim(strings.ToLower(flag), " \t") {
|
||||
case "uitverkocht":
|
||||
e.Flags.Soldout = true
|
||||
case "tryout":
|
||||
e.Flags.Tryout = true
|
||||
case "preview":
|
||||
e.Flags.Preview = true
|
||||
case "premiere":
|
||||
e.Flags.Premiere = true
|
||||
case "solo":
|
||||
e.Flags.Solo = true
|
||||
case "xl":
|
||||
e.Flags.XL = true
|
||||
case "duo":
|
||||
e.Flags.Duo = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getEvents(tour string) *[][]Event {
|
||||
var events [][]Event
|
||||
|
||||
f, err := os.Open(path.Join(ROOT_DIR, fmt.Sprintf("data/%s_tour.csv", tour)))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
|
||||
eventsAll := []Event{}
|
||||
|
||||
reader := csv.NewReader(bufio.NewReader(f))
|
||||
reader.Comma = ';'
|
||||
|
||||
now := time.Now()
|
||||
|
||||
for {
|
||||
line, error := reader.Read()
|
||||
if error == io.EOF {
|
||||
break
|
||||
} else if error != nil {
|
||||
log.Fatal(error)
|
||||
}
|
||||
|
||||
if line[0] == "date" {
|
||||
continue
|
||||
}
|
||||
|
||||
if now.After(
|
||||
(time.Time(ParseDate(line[0]))).Local().Add(time.Hour * time.Duration(24)),
|
||||
) {
|
||||
continue
|
||||
}
|
||||
|
||||
event := Event{
|
||||
Date: ParseDate(line[0]),
|
||||
Venue: line[2],
|
||||
City: line[1],
|
||||
Link: line[3],
|
||||
}
|
||||
|
||||
event.SetFlags(line[4])
|
||||
|
||||
eventsAll = append(eventsAll, event)
|
||||
|
||||
}
|
||||
|
||||
months := []string{}
|
||||
eventsByMonth := map[string][]Event{}
|
||||
|
||||
for _, event := range eventsAll {
|
||||
m := time.Time(event.Date).Format("01")
|
||||
if _, ok := eventsByMonth[m]; ok {
|
||||
eventsByMonth[m] = append(eventsByMonth[m], event)
|
||||
} else {
|
||||
months = append(months, m)
|
||||
eventsByMonth[m] = []Event{event}
|
||||
}
|
||||
}
|
||||
|
||||
for _, m := range months {
|
||||
events = append(events, eventsByMonth[m])
|
||||
}
|
||||
|
||||
return &events
|
||||
}
|
||||
13
go.mod
Normal file
@ -0,0 +1,13 @@
|
||||
module flipnoorman.nl/cohen
|
||||
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/VictorAvelar/mollie-api-go v1.6.6
|
||||
github.com/gin-gonic/gin v1.7.7 // indirect
|
||||
github.com/gofrs/uuid v4.0.0+incompatible
|
||||
github.com/jinzhu/gorm v1.9.16
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
)
|
||||
422
go.sum
Normal file
@ -0,0 +1,422 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
|
||||
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
|
||||
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
||||
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
|
||||
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
|
||||
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
|
||||
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
|
||||
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
|
||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
||||
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
|
||||
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
|
||||
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
|
||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
|
||||
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
|
||||
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
||||
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
||||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||
github.com/VictorAvelar/mollie-api-go v1.6.6 h1:VWP+k0PRt6esWO8qbCMO/ZvIRDrhBonkt0kxYEnGugk=
|
||||
github.com/VictorAvelar/mollie-api-go v1.6.6/go.mod h1:ndE8MbwgUZoq827yh0ppyYncii5jZLa0acL6j5iqZyk=
|
||||
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
github.com/gin-gonic/gin v1.7.2 h1:Tg03T9yM2xa8j6I3Z3oqLaQRSmKvxPd6g/2HJ6zICFA=
|
||||
github.com/gin-gonic/gin v1.7.2/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
|
||||
github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs=
|
||||
github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
|
||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
|
||||
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
|
||||
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
|
||||
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
|
||||
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
|
||||
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
|
||||
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
|
||||
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
|
||||
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
|
||||
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
|
||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
|
||||
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
|
||||
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
|
||||
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
|
||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c/go.mod h1:iQL9McJNjoIa5mjH6nYTCTZXUN6RP+XW3eib7Ya3XcI=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
|
||||
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
||||
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
||||
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
|
||||
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
||||
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
|
||||
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
|
||||
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
|
||||
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
58
gulpfile.js
Normal file
@ -0,0 +1,58 @@
|
||||
const gulp = require('gulp');
|
||||
const sass = require('gulp-sass');
|
||||
const webpack = require('webpack');
|
||||
const webpackStream = require('webpack-stream');
|
||||
const config = require('./webpack.config');
|
||||
|
||||
const cleanCSS = require('gulp-clean-css');
|
||||
const autoprefixer = require('gulp-autoprefixer');
|
||||
|
||||
const newer = require('gulp-newer');
|
||||
|
||||
const fontsSrc = './src/fonts'
|
||||
const fontsDest = './dist/fonts'
|
||||
|
||||
const imgSrc = './src/img'
|
||||
const imgDest = './dist/img'
|
||||
|
||||
const sassTask = () => {
|
||||
return gulp.src('./src/sass/**/*.scss')
|
||||
.pipe(sass().on('error', sass.logError))
|
||||
.pipe(autoprefixer({
|
||||
browsers: ['last 2 versions', 'ie > 8'],
|
||||
cascade: false
|
||||
}))
|
||||
.pipe(cleanCSS({compatibility: 'ie8'}))
|
||||
.pipe(gulp.dest('./dist/css'));
|
||||
}
|
||||
|
||||
const jsTask =() => {
|
||||
return gulp.src('./src/js/shared.js')
|
||||
.pipe(webpackStream(config, webpack))
|
||||
.pipe(gulp.dest('./dist/js/'));
|
||||
}
|
||||
|
||||
const fontsTask = () => {
|
||||
return gulp.src(`./${fontsSrc}/**`)
|
||||
.pipe(newer(fontsDest))
|
||||
.pipe(gulp.dest(fontsDest));
|
||||
}
|
||||
|
||||
const imgTask = () => {
|
||||
return gulp.src(`./${imgSrc}/**`)
|
||||
// .pipe(newer(imgDest))
|
||||
.pipe(gulp.dest(imgDest));
|
||||
}
|
||||
|
||||
const watch = () => {
|
||||
gulp.watch('./src/sass/**/*.scss', sassTask);
|
||||
gulp.watch('./src/fonts/**', fontsTask);
|
||||
gulp.watch('./src/img/**', imgTask);
|
||||
}
|
||||
|
||||
const build = gulp.parallel(jsTask, gulp.series(sassTask, fontsTask, imgTask));
|
||||
module.exports = {
|
||||
default: gulp.parallel(jsTask, gulp.series(sassTask, fontsTask, imgTask, watch)),
|
||||
build
|
||||
}
|
||||
|
||||
7
init.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
|
||||
echo "Enter fqdn:"
|
||||
read host_name
|
||||
|
||||
sed "s#{{root_dir}}#$1#g;s#{{host_name}}#$2#g" nginx/template.conf > nginx/flip_cohen.conf
|
||||
206
main.go
Normal file
@ -0,0 +1,206 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"html/template"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path"
|
||||
"time"
|
||||
|
||||
"github.com/VictorAvelar/mollie-api-go/mollie"
|
||||
"gopkg.in/yaml.v2"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
MollieToken string `yaml:"mollie_token"`
|
||||
MollieTesting bool `yaml:"mollie_testing"`
|
||||
MollieWebhook string `yaml:"mollie_webhook"`
|
||||
MollieRedirectURL string `yaml:"mollie_redirect_url"`
|
||||
MailServer string `yaml:"mail_server"`
|
||||
MailPort int `yaml:"mail_port"`
|
||||
MailUser string `yaml:"mail_user"`
|
||||
MailPass string `yaml:"mail_pass"`
|
||||
FromAddr string `yaml:"from_addr"`
|
||||
BCC string `yaml:"bcc"`
|
||||
}
|
||||
|
||||
var config Config
|
||||
|
||||
var mollieClient *mollie.Client
|
||||
|
||||
var ROOT_DIR string
|
||||
|
||||
func notFound(w http.ResponseWriter, r *http.Request) error {
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
|
||||
t, err := template.ParseFiles(path.Join(ROOT_DIR, "templates/404.html"))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return t.Execute(w, nil)
|
||||
}
|
||||
|
||||
func index(c *gin.Context) {
|
||||
events := getEvents("loveit")
|
||||
|
||||
c.HTML(http.StatusOK, "index.html", map[string]interface{}{
|
||||
"events": events,
|
||||
"nowYear": time.Now().Format("2006"),
|
||||
})
|
||||
}
|
||||
|
||||
func loveIt(c *gin.Context) {
|
||||
c.Redirect(http.StatusFound, "/")
|
||||
}
|
||||
|
||||
func albumsHandler(c *gin.Context) {
|
||||
albums := getAlbums()
|
||||
|
||||
c.HTML(http.StatusOK, "albums.html", map[string]interface{}{
|
||||
"nowYear": time.Now().Format("2006"),
|
||||
"albums": albums,
|
||||
})
|
||||
}
|
||||
|
||||
func handle404(c *gin.Context) {
|
||||
c.HTML(http.StatusOK, "404.html", map[string]interface{}{})
|
||||
}
|
||||
|
||||
func songsHandler(c *gin.Context) {
|
||||
albums := getAlbums()
|
||||
fmt.Println(albums)
|
||||
albumTitle := c.Param("album")
|
||||
songTitle := c.Param("song")
|
||||
|
||||
album, err := getAlbum(albums, albumTitle)
|
||||
|
||||
if err != nil {
|
||||
c.HTML(http.StatusNotFound, "404.html", map[string]interface{}{})
|
||||
return
|
||||
}
|
||||
|
||||
song, err := getSong(album, songTitle)
|
||||
|
||||
if err != nil {
|
||||
c.HTML(http.StatusNotFound, "404.html", map[string]interface{}{})
|
||||
return
|
||||
}
|
||||
|
||||
c.HTML(http.StatusOK, "song.html", map[string]interface{}{
|
||||
"nowYear": time.Now().Format("2006"),
|
||||
"album": album,
|
||||
"song": song,
|
||||
"albumTitle": albumTitle,
|
||||
})
|
||||
}
|
||||
|
||||
func createSocket(s string) net.Listener {
|
||||
os.Remove(s)
|
||||
|
||||
log.Println("Creating UNIX socket:", s)
|
||||
sock, err := net.Listen("unix", s)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = os.Chmod(s, 0777)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return sock
|
||||
}
|
||||
|
||||
func getDB(c *gin.Context) *gorm.DB {
|
||||
item, _ := c.Get("db")
|
||||
db := item.(*gorm.DB)
|
||||
|
||||
return db
|
||||
}
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 {
|
||||
ROOT_DIR = os.Args[1]
|
||||
} else {
|
||||
ROOT_DIR = "/var/www/flipnew"
|
||||
}
|
||||
|
||||
r := gin.New()
|
||||
|
||||
r.SetFuncMap(template.FuncMap{
|
||||
"formatMoney": func(cents int) string {
|
||||
return fmt.Sprintf("€%.2f", float64(float64(cents)/100))
|
||||
},
|
||||
})
|
||||
|
||||
log.Printf("Running from with app root dir: %s\n", ROOT_DIR)
|
||||
|
||||
db := GetDB()
|
||||
defer db.Close()
|
||||
|
||||
configPath := path.Join(ROOT_DIR, "data/config/config.yaml")
|
||||
configBytes, err := ioutil.ReadFile(configPath)
|
||||
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("Can't open config file at %s; %v", configPath, err))
|
||||
}
|
||||
|
||||
if err := yaml.Unmarshal([]byte(configBytes), &config); err != nil {
|
||||
panic(fmt.Sprintf("Can't parse config file at %s; %v", configPath, err))
|
||||
}
|
||||
|
||||
if mollieClient, err = initMollie(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
r.LoadHTMLGlob(path.Join(ROOT_DIR, "templates/*.html"))
|
||||
|
||||
r.Use(func(c *gin.Context) {
|
||||
c.Set("db", db)
|
||||
c.Next()
|
||||
})
|
||||
|
||||
r.GET("/", index)
|
||||
r.GET("/albums", albumsHandler)
|
||||
r.GET("/albums/:album/:song", songsHandler)
|
||||
r.GET("/love-it", loveIt)
|
||||
r.GET("/preorder", preorderIndex)
|
||||
r.POST("/preorder", postCreateOrder)
|
||||
r.POST("/preorder/bestellen", postGetOrderInfo)
|
||||
r.POST("/preorder/webhook", postMollieWebhook)
|
||||
r.GET("/preorder/bedankt", getPreOrderThankYou)
|
||||
r.POST("/preorder/retry/:orderid", postOrderRetry)
|
||||
r.GET("/preorder/pending/:orderid", getPendingOrder)
|
||||
r.NoRoute(handle404)
|
||||
|
||||
sockPath := path.Join(ROOT_DIR, "run/flip.sock")
|
||||
sock := createSocket(sockPath)
|
||||
|
||||
server := http.Server{
|
||||
Handler: r,
|
||||
}
|
||||
|
||||
fmt.Println("Running...")
|
||||
go func() {
|
||||
log.Fatal(server.Serve(sock))
|
||||
}()
|
||||
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt)
|
||||
|
||||
// Block until a signal is received.
|
||||
<-c
|
||||
fmt.Println("Stopping...")
|
||||
os.Remove(path.Join(ROOT_DIR, "run/flip.sock"))
|
||||
}
|
||||
42
mollie.go
Normal file
@ -0,0 +1,42 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/VictorAvelar/mollie-api-go/mollie"
|
||||
)
|
||||
|
||||
var ideal = mollie.PaymentMethod("ideal")
|
||||
|
||||
func createMolliePayment(preOrder PreOrder) (mollie.Payment, error) {
|
||||
amount := preOrder.CalcTotal() + SHIPPING
|
||||
return mollieClient.Payments.Create(mollie.Payment{
|
||||
Amount: &mollie.Amount{
|
||||
Currency: "EUR",
|
||||
Value: fmt.Sprintf("%.2f", float64(amount)/float64(100)),
|
||||
},
|
||||
Description: fmt.Sprintf("Flip Noorman - Love It! | CD x %v + verzendkosten", len(preOrder.Items)),
|
||||
Method: &ideal,
|
||||
Metadata: map[string]interface{}{
|
||||
"preorderID": preOrder.ID,
|
||||
},
|
||||
RedirectURL: fmt.Sprintf("%s/%v", config.MollieRedirectURL, preOrder.ID),
|
||||
WebhookURL: config.MollieWebhook,
|
||||
})
|
||||
}
|
||||
|
||||
func initMollie() (*mollie.Client, error) {
|
||||
// API token (`MOLLIE_API_TOKEN`) and the Organization token (`MOLLIE_ORG_TOKEN`)
|
||||
os.Setenv("MOLLIE_API_TOKEN", config.MollieToken)
|
||||
apiTokenClient, err := mollie.NewClient(nil, mollie.NewConfig(
|
||||
config.MollieTesting,
|
||||
config.MollieToken,
|
||||
))
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return apiTokenClient, nil
|
||||
}
|
||||
37
nginx/template.conf
Normal file
@ -0,0 +1,37 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name {{host_name}};
|
||||
client_max_body_size 20M;
|
||||
|
||||
#charset koi8-r;
|
||||
|
||||
|
||||
# access_log /usr/local/var/log/nginx/{{host_name}}.access.log;
|
||||
# error_log /usr/local/var/log/nginx/{{host_name}}.error.log;
|
||||
|
||||
|
||||
location /static {
|
||||
alias {{root_dir}}/dist;
|
||||
gzip_static on;
|
||||
expires max;
|
||||
add_header Cache-Control public;
|
||||
}
|
||||
|
||||
location /favicon {
|
||||
return 404 "Not Found";
|
||||
}
|
||||
|
||||
location /robots.txt {
|
||||
return 404 "Not Found";
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/{{root_dir}}/run/flip.sock;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
client_max_body_size 5m;
|
||||
}
|
||||
}
|
||||
25
package.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "cohen_site",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-loader": "^7.1.4",
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-autoprefixer": "^6.1.0",
|
||||
"gulp-clean-css": "^4.2.0",
|
||||
"gulp-newer": "^1.4.0",
|
||||
"gulp-sass": "^4.0.2",
|
||||
"webpack": "^4.1.1",
|
||||
"webpack-stream": "^4.0.2"
|
||||
}
|
||||
}
|
||||
253
preorder.go
Normal file
@ -0,0 +1,253 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"log"
|
||||
"net/http"
|
||||
"path"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gopkg.in/gomail.v2"
|
||||
)
|
||||
|
||||
const SHIPPING = 250
|
||||
|
||||
func sendMail(preOrder PreOrder, config Config) {
|
||||
tpl, err := template.ParseFiles(path.Join(ROOT_DIR, "templates/preorder.email"))
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
m := gomail.NewMessage()
|
||||
|
||||
var w bytes.Buffer
|
||||
data := map[string]interface{}{
|
||||
"preOrder": preOrder,
|
||||
}
|
||||
|
||||
tpl.Execute(&w, data)
|
||||
|
||||
m.SetHeader("From", config.FromAddr)
|
||||
m.SetHeader("To", preOrder.Email)
|
||||
m.SetAddressHeader("Bcc", config.BCC, "admin")
|
||||
m.SetHeader("Subject", "Flip Noorman bestelling | Flip speelt cohen")
|
||||
m.SetBody("text/html", w.String())
|
||||
|
||||
d := gomail.NewDialer(config.MailServer, config.MailPort, config.MailUser, config.MailPass)
|
||||
|
||||
// Send the email to Bob, Cora and Dan.
|
||||
if err := d.DialAndSend(m); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func preorderIndex(c *gin.Context) {
|
||||
db := getDB(c)
|
||||
products := []Product{}
|
||||
db.Where("id = 2").Find(&products)
|
||||
|
||||
c.HTML(http.StatusOK, "preorder_index.html", map[string]interface{}{
|
||||
"products": products,
|
||||
"nowYear": time.Now().Format("2006"),
|
||||
})
|
||||
}
|
||||
func postGetOrderInfo(c *gin.Context) {
|
||||
db := getDB(c)
|
||||
|
||||
var order struct {
|
||||
CD int `form:"product[2]"`
|
||||
}
|
||||
|
||||
c.Bind(&order)
|
||||
|
||||
product := Product{}
|
||||
db.Where("id = 2").Find(&product)
|
||||
|
||||
subtotal := product.Price * order.CD
|
||||
shipping := SHIPPING
|
||||
total := subtotal + shipping
|
||||
|
||||
c.HTML(http.StatusOK, "preorder_info.html", map[string]interface{}{
|
||||
"orderCount": order.CD,
|
||||
"product": product,
|
||||
"subtotal": subtotal,
|
||||
"shipping": shipping,
|
||||
"total": total,
|
||||
"error_": "",
|
||||
})
|
||||
}
|
||||
|
||||
func renderGetOrderInfoError(error_ string, count int, c *gin.Context) {
|
||||
db := getDB(c)
|
||||
product := Product{}
|
||||
db.Where("id = 2").Find(&product)
|
||||
|
||||
subtotal := product.Price * count
|
||||
shipping := SHIPPING
|
||||
total := subtotal + shipping
|
||||
|
||||
c.HTML(http.StatusOK, "preorder_info.html", map[string]interface{}{
|
||||
"orderCount": count,
|
||||
"product": product,
|
||||
"subtotal": subtotal,
|
||||
"shipping": shipping,
|
||||
"total": total,
|
||||
"error_": error_,
|
||||
})
|
||||
}
|
||||
|
||||
func postCreateOrder(c *gin.Context) {
|
||||
db := getDB(c)
|
||||
products := []Product{}
|
||||
db.Find(&products)
|
||||
|
||||
var order struct {
|
||||
DVD int `form:"product_count"`
|
||||
Name string `form:"name"`
|
||||
Email string `form:"email"`
|
||||
Address string `form:"address"`
|
||||
Postcode string `form:"postcode"`
|
||||
City string `form:"city"`
|
||||
}
|
||||
|
||||
c.Bind(&order)
|
||||
|
||||
if order.Name == "" || order.Email == "" || order.Address == "" || order.Postcode == "" || order.City == "" || order.DVD < 0 {
|
||||
renderGetOrderInfoError("Alle velden zijn verplicht", order.DVD, c)
|
||||
return
|
||||
}
|
||||
|
||||
preOrder := PreOrder{
|
||||
Name: order.Name,
|
||||
Email: order.Email,
|
||||
Address: order.Address,
|
||||
Postcode: order.Postcode,
|
||||
City: order.City,
|
||||
Status: PRE_ORDER_STATE_CREATED,
|
||||
}
|
||||
|
||||
db.Create(&preOrder)
|
||||
|
||||
for i := 0; i < order.DVD; i++ {
|
||||
db.Create(&Item{
|
||||
ProductID: 2,
|
||||
PreOrderID: preOrder.ID,
|
||||
})
|
||||
}
|
||||
|
||||
db.Preload("Items").Preload("Items.Product").Find(&preOrder)
|
||||
|
||||
payment, err := createMolliePayment(preOrder)
|
||||
|
||||
if err != nil {
|
||||
log.Printf("[err] createMolliePayment: %v", err)
|
||||
c.AbortWithError(500, fmt.Errorf("Er is iets fout gegaan..."))
|
||||
return
|
||||
}
|
||||
|
||||
molliePayment := MolliePayment{
|
||||
MolliePaymentID: payment.ID,
|
||||
Amount: preOrder.CalcTotal() + SHIPPING,
|
||||
Status: payment.Status,
|
||||
PreOrderID: preOrder.ID,
|
||||
}
|
||||
|
||||
db.Create(&molliePayment)
|
||||
|
||||
c.Redirect(http.StatusFound, payment.Links.Checkout.Href)
|
||||
}
|
||||
|
||||
func postMollieWebhook(c *gin.Context) {
|
||||
db := getDB(c)
|
||||
|
||||
paymentID := c.Request.FormValue("id")
|
||||
|
||||
payment, err := mollieClient.Payments.Get(paymentID, nil)
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Error get payment from mollie; %v; %s", err, paymentID)
|
||||
c.AbortWithError(500, fmt.Errorf("Deze bestelling is onbekend"))
|
||||
return
|
||||
}
|
||||
|
||||
molliePayment := &MolliePayment{}
|
||||
|
||||
if err := db.Preload("PreOrder").Where("mollie_payment_id = ?", paymentID).Find(&molliePayment).Error; err != nil {
|
||||
log.Printf("Error get payment from db; %v; %s", err, paymentID)
|
||||
c.AbortWithError(500, fmt.Errorf("Deze bestelling is onbekend"))
|
||||
return
|
||||
}
|
||||
|
||||
if payment.Status != molliePayment.Status {
|
||||
molliePayment.Status = payment.Status
|
||||
db.Save(&molliePayment)
|
||||
|
||||
if molliePayment.Status == "paid" {
|
||||
sendMail(molliePayment.PreOrder, config)
|
||||
}
|
||||
}
|
||||
|
||||
c.Status(200)
|
||||
}
|
||||
|
||||
func postOrderRetry(c *gin.Context) {
|
||||
orderID := c.Param("orderid")
|
||||
|
||||
db := getDB(c)
|
||||
|
||||
preOrder := &PreOrder{}
|
||||
|
||||
if err := db.Preload("Items").Preload("Items.Product").Where("id = ?", orderID).Find(&preOrder).Error; err != nil {
|
||||
c.AbortWithError(500, fmt.Errorf("Deze bestelling is onbekend"))
|
||||
return
|
||||
}
|
||||
|
||||
db.Find(&preOrder)
|
||||
|
||||
payment, err := createMolliePayment(*preOrder)
|
||||
|
||||
if err != nil {
|
||||
c.AbortWithError(500, fmt.Errorf("Er is iets fout gegaan..."))
|
||||
return
|
||||
}
|
||||
|
||||
molliePayment := MolliePayment{
|
||||
MolliePaymentID: payment.ID,
|
||||
Amount: preOrder.CalcTotal() + SHIPPING,
|
||||
Status: payment.Status,
|
||||
PreOrderID: preOrder.ID,
|
||||
}
|
||||
|
||||
db.Create(&molliePayment)
|
||||
|
||||
c.Redirect(http.StatusFound, payment.Links.Checkout.Href)
|
||||
}
|
||||
|
||||
func getPendingOrder(c *gin.Context) {
|
||||
orderID := c.Param("orderid")
|
||||
|
||||
db := getDB(c)
|
||||
|
||||
payments := []*MolliePayment{}
|
||||
|
||||
if err := db.Where("pre_order_id = ?", orderID).Order("created_at desc").Find(&payments).Error; err != nil {
|
||||
c.AbortWithError(500, fmt.Errorf("Deze bestelling is onbekend"))
|
||||
return
|
||||
}
|
||||
|
||||
payment := payments[0]
|
||||
|
||||
if payment.Status == "paid" {
|
||||
c.Redirect(http.StatusFound, "/preorder/bedankt")
|
||||
return
|
||||
}
|
||||
|
||||
c.HTML(http.StatusOK, "preorder_pending.html", map[string]interface{}{"payment": payment, "orderID": orderID})
|
||||
}
|
||||
|
||||
func getPreOrderThankYou(c *gin.Context) {
|
||||
c.HTML(http.StatusOK, "preorder_thankyou.html", nil)
|
||||
}
|
||||
16
preorder_test.go
Normal file
@ -0,0 +1,16 @@
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestSendMail(t *testing.T) {
|
||||
config := Config{
|
||||
MailServer: "smtp.transip.email",
|
||||
MailPort: 465,
|
||||
MailUser: "info@flipnoorman.nl",
|
||||
MailPass: "XXXXX",
|
||||
FromAddr: "info@flipnoorman.nl",
|
||||
BCC: "bas@baskloosterman.nl",
|
||||
}
|
||||
|
||||
sendMail(PreOrder{Name: "Bas Test", Email: "baskloosterman@gmail.com"}, config)
|
||||
}
|
||||
BIN
src/fonts/bebasneue-bold-webfont.woff
Executable file
BIN
src/fonts/bebasneue-bold-webfont.woff2
Executable file
BIN
src/fonts/bebasneue-book-webfont.woff
Executable file
BIN
src/fonts/bebasneue-book-webfont.woff2
Executable file
BIN
src/fonts/bebasneue-light-webfont.woff
Executable file
BIN
src/fonts/bebasneue-light-webfont.woff2
Executable file
BIN
src/fonts/bebasneue-regular-webfont.woff
Executable file
BIN
src/fonts/bebasneue-regular-webfont.woff2
Executable file
BIN
src/fonts/bebasneue-thin-webfont.woff
Executable file
BIN
src/fonts/bebasneue-thin-webfont.woff2
Executable file
BIN
src/img/albums/bellse-parese-BW.jpg
Normal file
|
After Width: | Height: | Size: 337 KiB |
BIN
src/img/albums/bellse-parese.jpg
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
src/img/albums/de-big-one-BW.jpg
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
src/img/albums/de-big-one.jpg
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
src/img/albums/make-up-BW.jpg
Normal file
|
After Width: | Height: | Size: 393 KiB |
BIN
src/img/albums/make-up.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
src/img/albums_main.jpg
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
src/img/cohen_main.jpg
Normal file
|
After Width: | Height: | Size: 175 KiB |
BIN
src/img/favicon.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/img/logo_gvp.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
src/img/loveit_main.jpg
Normal file
|
After Width: | Height: | Size: 300 KiB |
80
src/js/scroll.js
Normal file
@ -0,0 +1,80 @@
|
||||
function scrollIt(destination, duration , easing, callback) {
|
||||
|
||||
const easings = {
|
||||
linear(t) {
|
||||
return t;
|
||||
},
|
||||
easeInQuad(t) {
|
||||
return t * t;
|
||||
},
|
||||
easeOutQuad(t) {
|
||||
return t * (2 - t);
|
||||
},
|
||||
easeInOutQuad(t) {
|
||||
return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
|
||||
},
|
||||
easeInCubic(t) {
|
||||
return t * t * t;
|
||||
},
|
||||
easeOutCubic(t) {
|
||||
return (--t) * t * t + 1;
|
||||
},
|
||||
easeInOutCubic(t) {
|
||||
return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
|
||||
},
|
||||
easeInQuart(t) {
|
||||
return t * t * t * t;
|
||||
},
|
||||
easeOutQuart(t) {
|
||||
return 1 - (--t) * t * t * t;
|
||||
},
|
||||
easeInOutQuart(t) {
|
||||
return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t;
|
||||
},
|
||||
easeInQuint(t) {
|
||||
return t * t * t * t * t;
|
||||
},
|
||||
easeOutQuint(t) {
|
||||
return 1 + (--t) * t * t * t * t;
|
||||
},
|
||||
easeInOutQuint(t) {
|
||||
return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t;
|
||||
}
|
||||
};
|
||||
|
||||
const start = window.pageYOffset;
|
||||
const startTime = 'now' in window.performance ? performance.now() : new Date().getTime();
|
||||
|
||||
const documentHeight = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);
|
||||
const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.getElementsByTagName('body')[0].clientHeight;
|
||||
const destinationOffset = typeof destination === 'number' ? destination : destination.offsetTop;
|
||||
const destinationOffsetToScroll = Math.round(documentHeight - destinationOffset < windowHeight ? documentHeight - windowHeight : destinationOffset);
|
||||
|
||||
if ('requestAnimationFrame' in window === false) {
|
||||
window.scroll(0, destinationOffsetToScroll);
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
function scroll() {
|
||||
const now = 'now' in window.performance ? performance.now() : new Date().getTime();
|
||||
const time = Math.min(1, ((now - startTime) / duration));
|
||||
const timeFunction = easings[easing](time);
|
||||
window.scroll(0, Math.ceil((timeFunction * (destinationOffsetToScroll - start)) + start));
|
||||
|
||||
if (window.pageYOffset === destinationOffsetToScroll) {
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
requestAnimationFrame(scroll);
|
||||
}
|
||||
|
||||
scroll();
|
||||
}
|
||||
|
||||
export default scrollIt
|
||||
57
src/js/shared.js
Normal file
@ -0,0 +1,57 @@
|
||||
import scroll from './scroll';
|
||||
|
||||
const anchors = Array.prototype.slice.call(document.querySelectorAll('a[href^="#"]'))
|
||||
|
||||
anchors.forEach((elem) => {
|
||||
const href = elem.getAttribute('href')
|
||||
if (href.length < 2) {
|
||||
return
|
||||
}
|
||||
|
||||
elem.addEventListener("click", (e) => {
|
||||
e.preventDefault()
|
||||
const target = document.getElementById(href.slice(1))
|
||||
const viewportOffset = target.getBoundingClientRect();
|
||||
|
||||
scroll(viewportOffset.top, 1000, "easeOutQuart")
|
||||
})
|
||||
});
|
||||
|
||||
const nav = document.querySelector('.nav')
|
||||
|
||||
// Comment
|
||||
|
||||
document.addEventListener('scroll', () => {
|
||||
const doc = document.documentElement;
|
||||
const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
|
||||
|
||||
top > (window.innerHeight / 2) ? nav.classList.add('open') : nav.classList.remove('open')
|
||||
})
|
||||
|
||||
!function () {
|
||||
let formEnabled = false
|
||||
const submit = document.querySelector('.js-submit')
|
||||
const form = document.querySelector('.js-require')
|
||||
|
||||
if (!form) {
|
||||
return;
|
||||
}
|
||||
|
||||
var inputs = Array.prototype.slice.call(form.querySelectorAll('.js-input'))
|
||||
|
||||
var check = (e) => {
|
||||
if (inputs.filter(x => !x.value).length) {
|
||||
formEnabled = false
|
||||
submit.classList.add('disabled')
|
||||
} else {
|
||||
formEnabled = true
|
||||
submit.classList.remove('disabled')
|
||||
}
|
||||
}
|
||||
|
||||
form.addEventListener('keyup', check)
|
||||
form.addEventListener('submit', (e) => {
|
||||
!formEnabled && e.preventDefault()
|
||||
})
|
||||
check()
|
||||
}()
|
||||
2
src/sass/_color.scss
Normal file
@ -0,0 +1,2 @@
|
||||
$black:rgba(0,0,0,0.65);
|
||||
$grey: #edddde;
|
||||
4
src/sass/_mixins.scss
Normal file
@ -0,0 +1,4 @@
|
||||
@mixin font-size($sizeValue) {
|
||||
font-size: $sizeValue + px;
|
||||
font-size: ($sizeValue / 16) + rem;
|
||||
}
|
||||
57
src/sass/_reset.scss
Normal file
@ -0,0 +1,57 @@
|
||||
/* http://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
line-height: normal;
|
||||
}
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
html, html * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
207
src/sass/_typography.scss
Normal file
@ -0,0 +1,207 @@
|
||||
/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on May 24, 2019 */
|
||||
// @font-face {
|
||||
// font-family: 'bebas_neue';
|
||||
// src: url('../fonts/bebasneue-thin-webfont.woff2') format('woff2'),
|
||||
// url('../fonts/bebasneue-thin-webfont.woff') format('woff');
|
||||
// font-weight: 200;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'bebas_neue';
|
||||
// src: url('../fonts/bebasneue-light-webfont.woff2') format('woff2'),
|
||||
// url('../fonts/bebasneue-light-webfont.woff') format('woff');
|
||||
// font-weight: 300;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
@font-face {
|
||||
font-family: 'bebas_neue';
|
||||
src: url('../fonts/bebasneue-regular-webfont.woff2') format('woff2'),
|
||||
url('../fonts/bebasneue-regular-webfont.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'bebas_neue';
|
||||
// src: url('../fonts/bebasneue-book-webfont.woff2') format('woff2'),
|
||||
// url('../fonts/bebasneue-book-webfont.woff') format('woff');
|
||||
// font-weight: 500;
|
||||
// font-style: normal;
|
||||
|
||||
// }
|
||||
|
||||
@font-face {
|
||||
font-family: 'bebas_neue';
|
||||
src: url('../fonts/bebasneue-bold-webfont.woff2') format('woff2'),
|
||||
url('../fonts/bebasneue-bold-webfont.woff') format('woff');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
i {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'bebas_neue';
|
||||
}
|
||||
|
||||
.t-h1 {
|
||||
@include font-size(70);
|
||||
color: $grey;
|
||||
background: $black;
|
||||
padding: 0px 10px;
|
||||
margin-bottom: 50px;
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(38);
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
.t-h2 {
|
||||
@include font-size(36);
|
||||
color: $grey;
|
||||
background: $black;
|
||||
padding: 0px 10px;
|
||||
margin-bottom: 25px;
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(28);
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.t-p1 {
|
||||
@include font-size(30);
|
||||
line-height: 1.4;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
|
||||
&--invert {
|
||||
color: $grey;
|
||||
background: $black;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(22);
|
||||
}
|
||||
}
|
||||
|
||||
a.t-p1 {
|
||||
color: $black!important;
|
||||
|
||||
&--invert {
|
||||
color: $grey!important;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.t-p2 {
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
@include font-size(24);
|
||||
line-height: 1.8;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
|
||||
&--invert {
|
||||
background-color: #698a81;
|
||||
color: $grey;
|
||||
text-decoration: none;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(18);
|
||||
}
|
||||
}
|
||||
|
||||
a.t-p2 {
|
||||
color: $black!important;
|
||||
|
||||
&--link {
|
||||
text-decoration: underline;
|
||||
font-weight: 900;
|
||||
}
|
||||
}
|
||||
|
||||
.t-h1-2 {
|
||||
@include font-size(82);
|
||||
text-transform: uppercase;
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
margin-bottom: 15px;
|
||||
font-weight: 400;
|
||||
letter-spacing: -0.5px;
|
||||
color: #d97575;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(64);
|
||||
}
|
||||
}
|
||||
|
||||
.t-h2-2 {
|
||||
@include font-size(30);
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
margin-bottom: 15px;
|
||||
font-weight: 800;
|
||||
letter-spacing: -0.5px;
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.t-link {
|
||||
@extend .t-p1;
|
||||
color: $black!important;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
border:0;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
outline: 0;
|
||||
background-color: transparent;
|
||||
font-family: 'bebas_neue';
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.t-p-footer {
|
||||
@include font-size(24);
|
||||
line-height: 1.4;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.o-margin-large {
|
||||
margin-bottom: 50px;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
.o-margin-large {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.c-btn {
|
||||
display: inline-block;
|
||||
padding: 10px;
|
||||
background-color: #698a81;
|
||||
color: $grey;
|
||||
text-decoration: none;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&--l {
|
||||
margin-top: 25px;
|
||||
padding: 10px 15px;
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
@include font-size(24);
|
||||
}
|
||||
}
|
||||
544
src/sass/index.scss
Normal file
@ -0,0 +1,544 @@
|
||||
@import "reset";
|
||||
@import "mixins";
|
||||
@import "color";
|
||||
@import "typography";
|
||||
|
||||
|
||||
body {
|
||||
background-color: #CCC5C1;
|
||||
color: $black;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-line;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.c-cohen-opening, .c-loveit-opening, .c-albums-opening {
|
||||
|
||||
background-size: cover;
|
||||
background-repeat: none;
|
||||
background-position: center;
|
||||
|
||||
height: 100vh;
|
||||
padding: 50px;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
padding: 25px;
|
||||
}
|
||||
|
||||
&__heading {
|
||||
@include font-size(70);
|
||||
color: $grey;
|
||||
background: $black;
|
||||
padding: 0px 10px;
|
||||
margin-bottom: 20px;
|
||||
display: inline-block;
|
||||
font-weight: 600;
|
||||
|
||||
&--small {
|
||||
@include font-size(36);
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(36);
|
||||
margin-bottom: 10px;
|
||||
|
||||
&--small {
|
||||
@include font-size(24);
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__main {
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
display: block;
|
||||
|
||||
@media (max-width: 600px) {
|
||||
position: relative;
|
||||
top: auto;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
a {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&__other {
|
||||
text-align: right;
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
right: 50px;
|
||||
display: inline-block;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
position: static;
|
||||
text-align: left;
|
||||
margin-top: 25px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.c-loveit-opening {
|
||||
height: calc(100vh - 44.5px);
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
background: black;
|
||||
background-image: url('../img/loveit_main.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
|
||||
.c-tag {
|
||||
@extend .t-p1;
|
||||
font-weight: bold;
|
||||
// @include font-size(18);
|
||||
margin-left: 10px;
|
||||
|
||||
&:before {
|
||||
content: "(";
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: ")";
|
||||
}
|
||||
}
|
||||
|
||||
.c-auto-ratio {
|
||||
margin-top: 50px;
|
||||
&__inner {
|
||||
padding-top: 56.25%;
|
||||
position: relative;
|
||||
|
||||
iframe {
|
||||
position: absolute;
|
||||
top:0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.c-loveit-opening {
|
||||
background-image: url("/static/img/loveit_main.jpg");
|
||||
}
|
||||
.c-albums-opening {
|
||||
background-image: url("/static/img/albums_main.jpg");
|
||||
}
|
||||
.c-cohen-opening {
|
||||
background-image: url("/static/img/cohen_main.jpg");
|
||||
|
||||
@media (max-width: 600px) {
|
||||
background-position: right 65% top;
|
||||
}
|
||||
}
|
||||
|
||||
.c-page-section {
|
||||
padding: 50px 0;
|
||||
&--full {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
&__content {
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
padding: 0 25px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
padding: 25px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.c-footer {
|
||||
width: 100%;
|
||||
padding: 25px;
|
||||
color: $grey;
|
||||
@include font-size(24);
|
||||
background-color: $black;
|
||||
text-align: center;
|
||||
span {
|
||||
display: inline-block;
|
||||
margin-right: 25px;
|
||||
vertical-align: middle;
|
||||
|
||||
&:last-of-type {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(18);
|
||||
}
|
||||
|
||||
&--new {
|
||||
@include font-size(18);
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.c-event {
|
||||
// display: block;
|
||||
@include font-size(24);
|
||||
min-width: 100%;
|
||||
vertical-align: top;
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
|
||||
li {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
&__date {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
&-month-section {
|
||||
margin-bottom: 35px;
|
||||
@media (max-width: 600px) {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 0 25px 5px 0
|
||||
}
|
||||
|
||||
td:nth-of-type(4n + 1) {
|
||||
width: 200px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
td:nth-of-type(4n + 2) {
|
||||
width: 225px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
td:nth-of-type(4n + 3) {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
td:nth-of-type(4n + 4) {
|
||||
text-align: right;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
&__button {
|
||||
@extend .c-btn;
|
||||
padding: 5px 15px;
|
||||
|
||||
&--disabled {
|
||||
cursor: default;
|
||||
background-color: #8c8988;
|
||||
opacity: 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
// @media (max-width: 850px) {
|
||||
// td:nth-of-type(4n + 4) {
|
||||
// display: none;
|
||||
// }
|
||||
// }
|
||||
|
||||
&__title {
|
||||
@extend .t-h2-2;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(18);
|
||||
|
||||
td {
|
||||
padding: 0 0 5px 0;
|
||||
display: block;
|
||||
width: auto!important;
|
||||
text-align: left!important;
|
||||
|
||||
&:nth-of-type(4n + 1) {
|
||||
display: inline-block;
|
||||
|
||||
&::after {
|
||||
content: " / ";
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-of-type(4n + 2) {
|
||||
display: inline-block;
|
||||
text-align: right!important;
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
display: block;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
padding: 15px 25px;
|
||||
background-color: $black;
|
||||
color: $grey;
|
||||
display: table;
|
||||
|
||||
transform: translateY(-100%);
|
||||
transition: all 200ms ease-out;
|
||||
|
||||
&.open {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
&.always-open {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: $grey!important;
|
||||
@include font-size(28);
|
||||
margin-right: 15px;
|
||||
font-weight: bold;
|
||||
|
||||
&:last-of-type {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
@include font-size(20);
|
||||
}
|
||||
|
||||
|
||||
&.c-nav-invert-button {
|
||||
background: $grey;
|
||||
color: $black!important;
|
||||
display: inline-block;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
|
||||
@media(max-width: 600px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__section {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
&__right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
.c-album {
|
||||
&__left {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 49.5%;
|
||||
padding-right: 25px;
|
||||
@media (max-width: 600px) {
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
&__right {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 49.5%;
|
||||
@media (max-width: 600px) {
|
||||
width: 100%;
|
||||
padding-top: 25px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#scroll {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 50px;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
#scroll a {
|
||||
padding-top: 70px;
|
||||
position: relative;
|
||||
color: $grey;
|
||||
text-decoration: none;
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
#scroll a span {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-left: -12px;
|
||||
border-left: 1px solid $grey;
|
||||
border-bottom: 1px solid $grey;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
-webkit-animation: sdb05 1.5s infinite;
|
||||
animation: sdb05 1.5s infinite;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
@-webkit-keyframes sdb05 {
|
||||
0% {
|
||||
-webkit-transform: rotate(-45deg) translate(0, 0);
|
||||
opacity: 0;
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(-45deg) translate(-20px, 20px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@keyframes sdb05 {
|
||||
0% {
|
||||
transform: rotate(-45deg) translate(0, 0);
|
||||
opacity: 0;
|
||||
}
|
||||
50% {
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
transform: rotate(-45deg) translate(-20px, 20px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
.c-form-row {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.c-label {
|
||||
@extend .t-p1;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.c-input {
|
||||
font-family: 'bebas_neue';
|
||||
font-size: 30px;
|
||||
border: 0;
|
||||
width: 100%;
|
||||
border-bottom: 2px solid $black;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
.c-number-input {
|
||||
input {
|
||||
width: 75px;
|
||||
}
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
@extend .t-p1;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.c-submit {
|
||||
border: 0;
|
||||
outline: 0;
|
||||
@extend .t-p1;
|
||||
@extend .t-p1--invert;
|
||||
cursor: pointer;
|
||||
font-weight: normal;
|
||||
// padding: 5px 15px;
|
||||
font-family: 'bebas_neue';
|
||||
}
|
||||
|
||||
.c-table {
|
||||
width: 100%;
|
||||
margin-bottom: 50px;
|
||||
|
||||
td {
|
||||
@extend .t-p1;
|
||||
|
||||
&:last-of-type {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
&__border {
|
||||
border-top: 1px solid $black;
|
||||
}
|
||||
}
|
||||
|
||||
.o-full {
|
||||
min-height: calc(100vh - 76px);
|
||||
}
|
||||
|
||||
.disabled {
|
||||
cursor: default;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
|
||||
.red {
|
||||
color: red!important;
|
||||
}
|
||||
|
||||
.c-new-nav {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
background-color: #b99970;
|
||||
|
||||
&__ul {
|
||||
display: flex;
|
||||
padding: 0 15px;
|
||||
justify-content: center;
|
||||
@media (max-width: 600px) {
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
&__li {
|
||||
margin-right: 35px;
|
||||
&:last-of-type {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
&__a {
|
||||
font-family: 'Noto Serif Display', serif;
|
||||
text-transform: uppercase;
|
||||
color: $black;
|
||||
@include font-size(18);
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
29
templates/404.html
Normal file
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Zingt Leonard Cohen</title>
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="/static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav open">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/">Zingt Leonard Cohen</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="/love-it">Love It!</a>
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-page-section">
|
||||
<div class="c-page-section__content" style="text-align: center;">
|
||||
<h1 style="font-size: 200px; font-weight: bold; margin-top: 100px;">404</h1>
|
||||
<p class="t-p1">De pagina die je probeert te bezoeken bestaat niet (meer).</p>
|
||||
<p class="t-p1"><a href="/" class="t-p1 t-p1--invert">Naar home</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
72
templates/albums.html
Normal file
@ -0,0 +1,72 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Albums</title>
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="/static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" class="c-nav-invert-button" target="_blank" ref="no-follow">Nieuwsbrief</a>
|
||||
<a href="/">Love It</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-albums-opening">
|
||||
<nav class="c-albums-opening__main">
|
||||
<a href="#tour"></a>
|
||||
<p class="c-albums-opening__heading">Flip Noorman</p>
|
||||
<div></div>
|
||||
<p class="c-albums-opening__heading">Albums</p>
|
||||
</nav>
|
||||
|
||||
<nav class="c-albums-opening__other">
|
||||
<a href="/" class="c-albums-opening__heading c-albums-opening__heading--small">Love It</a>
|
||||
</nav>
|
||||
<div id="scroll">
|
||||
<a href="#de-big-one">
|
||||
<span></span>
|
||||
scroll
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ range .albums }}
|
||||
{{$album := .}}
|
||||
<div class="c-page-section" id="{{.Path}}">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1">
|
||||
{{.Name}} ({{.Release}})
|
||||
</h1>
|
||||
<div class="c-album">
|
||||
<a class="t-p1 t-p1--invert" style="margin-bottom: 25px; display: inline-block; margin-right: 10px;" rel="noopener" href="{{.Links.itunes}}" target="_blank">Koop op iTunes</a>
|
||||
<a class="t-p1 t-p1--invert" style="margin-bottom: 25px; display: inline-block;" rel="noopener" href="{{.Links.spotify}}" target="_blank">Luister op Spotify</a>
|
||||
<div></div>
|
||||
<div class="c-album__left">
|
||||
<img src="/static/img/albums/{{.Path}}-BW.jpg" alt="">
|
||||
</div>
|
||||
<div class="c-album__right">
|
||||
<ul>
|
||||
{{range .Songs}}
|
||||
<li><a class="t-p1 t-p1--invert" href="/albums/{{$album.Path}}/{{.Path}}">{{.NR}} {{.Title}}</a></li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
186
templates/index.html
Normal file
@ -0,0 +1,186 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Love It</title>
|
||||
<meta name="description" content="Na zijn succesvolle tournee met het werk van Leonard Cohen is Flip Noorman terug met een eigen avondvullende show. Love it">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+Display:wght@400;600&display=swap" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="static/img/favicon.png" />
|
||||
<style>
|
||||
.t-quote {
|
||||
margin-right: 5px;
|
||||
font-style: italic;
|
||||
}
|
||||
.t-quote:before {
|
||||
content: "“";
|
||||
font-style: normal;
|
||||
}
|
||||
.t-quote:after {
|
||||
content: "”";
|
||||
font-style: normal;
|
||||
margin-left: 7px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="c-new-nav">
|
||||
<ul class="c-new-nav__ul">
|
||||
<li class="c-new-nav__li">
|
||||
<a href="#loveit" class="c-new-nav__a">Love it</a>
|
||||
</li>
|
||||
<li class="c-new-nav__li">
|
||||
<a href="#tour" class="c-new-nav__a">Tour</a>
|
||||
</li>
|
||||
<li class="c-new-nav__li">
|
||||
<a href="#contact" class="c-new-nav__a">Contact</a>
|
||||
</li>
|
||||
<li class="c-new-nav__li">
|
||||
<a href="/albums" class="c-new-nav__a">Albums</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class="c-loveit-opening">
|
||||
|
||||
</div>
|
||||
<div class="c-page-section loveit" id="loveit">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1-2">
|
||||
Love It
|
||||
</h1>
|
||||
<p class="t-p2 o-margin-large">
|
||||
Na zijn succesvolle tournee met het werk van Leonard Cohen is Flip Noorman terug met een eigen avondvullende show.
|
||||
</p>
|
||||
|
||||
<p class="t-p2 o-margin-large">
|
||||
Wederom bijgestaan door zijn bejubelde band ‘De Noormannen’ pakt Flip het meest uitgebuite thema in de kunst aan: de liefde.
|
||||
</p>
|
||||
|
||||
<p class="t-p2 o-margin-large">
|
||||
In Love it schetst Noorman in eerste instantie een wereldbeeld van ‘love for sale’ perfectie. Maar vervolgens brengt hij juist een onversneden hommage aan het onvolmaakte.
|
||||
</p>
|
||||
|
||||
<p class="t-p2 o-margin-large">
|
||||
En laten we eerlijk zijn: u verdient het toch? Een voorstelling met een lach en een traan, een rilling van ontroering. Een diepe stem waarin u uw zorgen even kunt vergeten. Gitaren als warme baden. Een wervelend theatraal concert dat bovendien uw huid strakker, gladder en egaler maakt.
|
||||
</p>
|
||||
<p class="t-p2 o-margin-large">
|
||||
Flip Noorman bood u nog nooit zoveel comfort en is dermatologisch getest en klinisch bewezen. U hoeft hem maar op te spuiten en mild-erotische fantasieën zullen als honing over u heen druipen.
|
||||
</p>
|
||||
|
||||
<p class="t-p2 o-margin-large">
|
||||
‘Heb jij Love it al gezien?’ 'Nee, hoe was het?'<br/>
|
||||
'Oh… Love it!’
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-page-section" id="tour">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1-2">
|
||||
Pre-order
|
||||
</h1>
|
||||
<p class="t-p2">
|
||||
Pre-order de Love it CD nu!<br>
|
||||
En ontvang alvast een liedje in je mail.
|
||||
<p>
|
||||
<a href="/preorder" class="c-btn c-btn--l">Bestel nu!</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-page-section" id="tour">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1-2">
|
||||
Tour
|
||||
</h1>
|
||||
{{ if and (and .events (gt (len .events) 0) true) }}
|
||||
<div class="c-event-container">
|
||||
{{ range .events}}
|
||||
{{$e := index . 0}}
|
||||
<div class="c-event-month-section">
|
||||
<table class="c-event">
|
||||
{{range .}}
|
||||
<tr>
|
||||
<td class="c-event__date">{{.Date.Format}}</td>
|
||||
<td>{{.City}}</td>
|
||||
<td>
|
||||
{{.Venue}}
|
||||
{{if .Flags.Premiere}}
|
||||
<span class="c-tag" >premiere</span>
|
||||
{{else if .Flags.Tryout}}
|
||||
<span class="c-tag" >try-out</span>
|
||||
{{else if .Flags.Preview}}
|
||||
<span class="c-tag" >preview</span>
|
||||
{{end}}
|
||||
{{if .Flags.Solo}}
|
||||
<span class="c-tag" >solo</span>
|
||||
{{end}}
|
||||
{{if .Flags.XL}}
|
||||
<span class="c-tag" >xl</span>
|
||||
{{end}}
|
||||
</td>
|
||||
<td>
|
||||
{{if .Flags.Soldout}}
|
||||
<span class="c-event__button">Uitverkocht</span>
|
||||
{{else if ne .Link ""}}
|
||||
<a class="c-event__button" href="{{.Link}}">Tickets</a>
|
||||
{{else if eq .Link ""}}
|
||||
<a class="c-event__button c-event__button--disabled">Tickets</a>
|
||||
{{end}}
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</table>
|
||||
</div>
|
||||
{{ end}}
|
||||
</div>
|
||||
{{ else }}
|
||||
<p class="t-p2">Er staan momenteel geen shows geplanned.</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-page-section">
|
||||
<div class="c-page-section__content" id="contact">
|
||||
<h1 class="t-h1-2">
|
||||
contact
|
||||
</h1>
|
||||
|
||||
<div>
|
||||
<h2 class="t-h2-2">Theaterboekingen</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="t-p2">George Visser Productions b.v. / TriColour Productions b.v.</li>
|
||||
<li class="t-p2">Postbus 18618</li>
|
||||
<li class="t-p2">2502 EP Den Haag</li>
|
||||
<li class="t-p2">+31 (070) 346 56 57</li>
|
||||
<li class="t-p2">www.gvproductions.nl</li>
|
||||
</ul>
|
||||
|
||||
<div style="margin-top: 50px;">
|
||||
<h2 class="t-h2-2">Persoonlijke boodschappen</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="t-p2">
|
||||
info@flipnoorman.nl
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div style="margin-top: 50px;">
|
||||
<h2 class="t-h2-2">Nieuwsbrief</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="t-p2">
|
||||
<a class="c-btn" href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" target="_blank" ref="no-follow">Inschrijven</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="c-footer c-footer--new">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
137
templates/loveit.html
Normal file
@ -0,0 +1,137 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Love It!</title>
|
||||
<meta name="description" content="Langzaam worden de principes waarvoor je voorheen nog als radicaal werd versleten deel van de populaire cultuur. Noorman ziet zichzelf steeds meer tot de mainstream behoren terwijl hij toch altijd dacht dat hij de verongelijkte kunstenaar zou blijven. Wat nu?">
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="/static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/">Love It!</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" class="c-nav-invert-button" target="_blank" ref="no-follow">Nieuwsbrief</a>
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-loveit-opening">
|
||||
<nav class="c-loveit-opening__main">
|
||||
<a href="#tour"></a>
|
||||
<p class="c-loveit-opening__heading">Love It</p>
|
||||
</nav>
|
||||
|
||||
<nav class="c-loveit-opening__other">
|
||||
<a href="/" class="c-loveit-opening__heading c-loveit-opening__heading--small">Zingt Leonard Cohen</a>
|
||||
<div></div>
|
||||
<a href="/albums" class="c-loveit-opening__heading c-loveit-opening__heading--small">Albums</a>
|
||||
</nav>
|
||||
<div id="scroll">
|
||||
<a href="#tour">
|
||||
<span></span>
|
||||
scroll
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-page-section" id="tour">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1">
|
||||
Tour
|
||||
</h1>
|
||||
{{ if and .events (gt (len .events) 0) }}
|
||||
<div class="c-event-container">
|
||||
{{ range .events}}
|
||||
{{$e := index . 0}}
|
||||
<div class="c-event-month-section">
|
||||
<h2 class="c-event__title">{{$e.Date.Title}}</h2>
|
||||
<table class="c-event">
|
||||
{{range .}}
|
||||
<tr>
|
||||
<td class="c-event__date">{{.Date.Format}}</td>
|
||||
<td>{{.City}}</td>
|
||||
<td>{{.Venue}}</td>
|
||||
<td>
|
||||
{{if .Flags.Soldout}}
|
||||
<span class="c-event__button">Uitverkocht</span>
|
||||
{{else if ne .Link ""}}
|
||||
<a class="c-event__button" href="{{.Link}}">Tickets</a>
|
||||
{{end}}
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</table>
|
||||
</div>
|
||||
{{ end}}
|
||||
</div>
|
||||
{{ else }}
|
||||
<p class="t-p1">Momenteel staan er geen shows meer geplanned.</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-page-section">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1" style="margin-bottom: 15px;">
|
||||
Flip Noorman
|
||||
</h1>
|
||||
<div></div>
|
||||
<h1 class="t-h1">
|
||||
Love It
|
||||
</h1>
|
||||
|
||||
<p class="t-p1">
|
||||
“Ben je vegan?”
|
||||
</p>
|
||||
<p class="t-p1"> Vroeg de barista toen Noorman een soja-cappuccino bestelde.</p>
|
||||
<p class="t-p1" style="font-weight: bold; margin-bottom: 35px;">“Ja? Love it!”</span> </p>
|
||||
|
||||
<p class="t-p1" style="margin-bottom: 15px;">Langzaam worden de principes waarvoor je voorheen nog als radicaal werd versleten deel van de populaire cultuur. Noorman ziet zichzelf steeds meer tot de mainstream behoren terwijl hij toch altijd dacht dat hij de verongelijkte kunstenaar zou blijven. Wat nu?</p>
|
||||
<p class="t-p1">In Love it! onderzoekt hij of kan genieten van de acceptatie of dat hij het nodig heeft om af te wijken.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-page-section">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1">
|
||||
contact
|
||||
</h1>
|
||||
|
||||
<div>
|
||||
<h2 class="t-h2">Theaterboekingen</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="t-p1">George Visser Productions b.v. / TriColour Productions b.v.</li>
|
||||
<li class="t-p1">Postbus 18618</li>
|
||||
<li class="t-p1">2502 EP Den Haag</li>
|
||||
<li class="t-p1">+31 (070) 346 56 57</li>
|
||||
<li class="t-p1">www.gvproductions.nl</li>
|
||||
</ul>
|
||||
|
||||
<div style="margin-top: 50px;">
|
||||
<h2 class="t-h2">Persoonlijke boodschappen</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="t-p1">
|
||||
info@flipnoorman.nl
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div style="margin-top: 50px;">
|
||||
<h2 class="t-h2">Nieuwsbrief</h2>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="t-p1">
|
||||
<a class="t-p1 t-p1--invert" href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" target="_blank" ref="no-follow">Inschrijven</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
11
templates/preorder.email
Normal file
@ -0,0 +1,11 @@
|
||||
<p>Beste {{.preOrder.Name}},</p>
|
||||
<p> </p>
|
||||
<p>Bedankt voor je bestelling. Je krijgt hem zo snel mogelijk in de bus.</p>
|
||||
<p> </p>
|
||||
<p>
|
||||
<a href="https://my.hidrive.com/share/l99eeijlka">Hier</a> kan je vast een duet tussen Vera van der Bie en mij downloaden (zowel als wave als mp3).
|
||||
</p>
|
||||
<p>Hopelijk tot ergens in het theater!</p>
|
||||
<p> </p>
|
||||
<p>Vriendelijke groeten,</p>
|
||||
<p>Flip Noorman</p>
|
||||
63
templates/preorder_bup.html
Normal file
@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Zingt Leonard Cohen | Preorder</title>
|
||||
<meta name="description" content="Na het overlijden van Cohen in 2016 bracht Flip Noorman eenmalig een hommage aan zijn grootste inspiratiebron in Paradiso. Na vele verzoeken om het toch niet bij die ene keer te laten is hij gezwicht om het programma nu ook in het theater te brengen.">
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav always-open">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/">Zingt Leonard Cohen</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" class="c-nav-invert-button" target="_blank" ref="no-follow">Nieuwsbrief</a>
|
||||
<a href="/love-it">Love It!</a>
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-page-section" id="" style="padding-top: 150px">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1">
|
||||
Bestel nu
|
||||
</h1>
|
||||
<p class="t-p1 o-margin-large">
|
||||
De voorstelling is prachtig gedocumenteerd.
|
||||
<p>
|
||||
<p class="t-p1 o-margin-large">
|
||||
<span class="t-quote">Flip Noorman evenaart Leonard Cohen</span> Trouw <span style="font-size: 21px;
|
||||
line-height: -2;
|
||||
display: inline-block;
|
||||
margin-left: 5px;
|
||||
position: relative;
|
||||
top: -4px;">★★★★★</span>
|
||||
<p>
|
||||
<p class="t-p1 o-margin-large">
|
||||
Hier zit tevens een boekje met alle vertalingen in.
|
||||
<p>
|
||||
<form action="/preorder/bestellen" method="POST">
|
||||
{{range .products}}
|
||||
<div class="c-form-row">
|
||||
<div class="c-product">
|
||||
<label class="c-label" for="product-{{.ID}}" style="display: block;">{{.Name}} | {{formatMoney .Price}} per stuk</label>
|
||||
<div class="c-number-input"><input class="c-input" type="number" value="1" id="product-{{.ID}}" name="product[{{.ID}}]"> <span>Stuks</span></div>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="c-form-row">
|
||||
<button class="c-submit">BESTELLEN</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
53
templates/preorder_index.html
Normal file
@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Love It | Preorder</title>
|
||||
<meta name="description" content="Na zijn succesvolle tournee met het werk van Leonard Cohen is Flip Noorman terug met een eigen avondvullende show. Love it">
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav always-open">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/">Love It!</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" class="c-nav-invert-button" target="_blank" ref="no-follow">Nieuwsbrief</a>
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-page-section" id="" style="padding-top: 150px; min-height: calc(100vh - 75px)">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1">
|
||||
Bestel nu
|
||||
</h1>
|
||||
<p class="t-p1 o-margin-large">
|
||||
Pre-order de Love it CD nu!<br>
|
||||
En ontvang alvast een liedje in je mail.
|
||||
<p>
|
||||
|
||||
<form action="/preorder/bestellen" method="POST">
|
||||
{{range .products}}
|
||||
<div class="c-form-row">
|
||||
<div class="c-product">
|
||||
<label class="c-label" for="product-{{.ID}}" style="display: block;">{{.Name}} | {{formatMoney .Price}} per stuk</label>
|
||||
<div class="c-number-input"><input class="c-input" type="number" value="1" id="product-{{.ID}}" name="product[{{.ID}}]"> <span>Stuks</span></div>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="c-form-row">
|
||||
<button class="c-submit">BESTELLEN</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
82
templates/preorder_info.html
Normal file
@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Love It! | Preorder</title>
|
||||
<meta name="description" content="Na zijn succesvolle tournee met het werk van Leonard Cohen is Flip Noorman terug met een eigen avondvullende show. Love it">
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav always-open">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/">Love It!</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" class="c-nav-invert-button" target="_blank" ref="no-follow">Nieuwsbrief</a>
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-page-section" id="" style="padding-top: 150px">
|
||||
<div class="c-page-section__content">
|
||||
<h1 class="t-h1">
|
||||
Bestellen
|
||||
</h1>
|
||||
<table class="c-table">
|
||||
<tr>
|
||||
<td>{{.product.Name}}</td>
|
||||
<td>{{.orderCount}} x</td>
|
||||
<td>{{formatMoney .subtotal}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Verzendkosten</td>
|
||||
<td>1 x</td>
|
||||
<td>{{formatMoney .shipping}}</td>
|
||||
</tr>
|
||||
<tr class="c-table__border">
|
||||
<td>Totaal</td>
|
||||
<td></td>
|
||||
<td>{{formatMoney .total}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{if ne .error_ ""}}
|
||||
<p class="t-p1 red">{{.error_}}</p>
|
||||
{{end}}
|
||||
<form action="/preorder" method="POST" class="js-require">
|
||||
<input type="hidden" name="product_count" class="js-input" value="{{.orderCount}}">
|
||||
<div class="c-form-row"><p class="t-p1">* = verplicht veld</p></div>
|
||||
<div class="c-form-row">
|
||||
<label class="c-label" for="name" style="display: block;">Naam (*)</label>
|
||||
<input class="c-input js-input" type="text" name="name" id="name">
|
||||
</div>
|
||||
<div class="c-form-row">
|
||||
<label class="c-label" for="email" style="display: block;">Emailadres (*)</label>
|
||||
<input class="c-input js-input" type="text" name="email" id="email">
|
||||
</div>
|
||||
<div class="c-form-row">
|
||||
<label class="c-label" for="address" style="display: block;">Adres (*)</label>
|
||||
<input class="c-input js-input" type="text" name="address" id="address">
|
||||
</div>
|
||||
<div class="c-form-row">
|
||||
<label class="c-label" for="postcode" style="display: block;">Postcode (*)</label>
|
||||
<input class="c-input js-input" type="text" name="postcode" id="postcode">
|
||||
</div>
|
||||
<div class="c-form-row">
|
||||
<label class="c-label" for="city" style="display: block;">Stad (*)</label>
|
||||
<input class="c-input js-input" type="text" name="city" id="city">
|
||||
</div>
|
||||
<div class="c-form-row">
|
||||
<button class="c-submit js-submit">Bestellen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
58
templates/preorder_pending.html
Normal file
@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Love It! | Preorder</title>
|
||||
<meta name="description" content="Na het overlijden van Cohen in 2016 bracht Flip Noorman eenmalig een hommage aan zijn grootste inspiratiebron in Paradiso. Na vele verzoeken om het toch niet bij die ene keer te laten is hij gezwicht om het programma nu ook in het theater te brengen.">
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav always-open">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/">Love It!</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" class="c-nav-invert-button" target="_blank" ref="no-follow">Nieuwsbrief</a>
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-page-section o-full" id="" style="padding-top: 150px">
|
||||
<div class="c-page-section__content">
|
||||
{{if eq .payment.Status "open"}}
|
||||
<p class="t-p1">Betaling aan het verwerken <span class="js-loading"></span></p>
|
||||
{{else}}
|
||||
<form action="/preorder/retry/{{.orderID}}" method="POST">
|
||||
<p class="t-p1">Je betaling is mislukt, probeer <button class="t-link">opnieuw</button></p>
|
||||
</form>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script>
|
||||
{{if eq .payment.Status "open"}}
|
||||
var loading = document.querySelector('.js-loading')
|
||||
|
||||
setInterval((function () {
|
||||
var times = 0
|
||||
return function () {
|
||||
times++
|
||||
var dots = ''
|
||||
for (i = 0; i < times % 4; i++) {
|
||||
dots += '.'
|
||||
}
|
||||
|
||||
loading.textContent = dots
|
||||
}
|
||||
})(), 200)
|
||||
setTimeout(function () {window.location.reload()}, 2000)
|
||||
{{end}}
|
||||
</script>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
35
templates/preorder_thankyou.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Flip Noorman | Love It! | Preorder</title>
|
||||
<meta name="description" content="Na zijn succesvolle tournee met het werk van Leonard Cohen is Flip Noorman terug met een eigen avondvullende show. Love it">
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav always-open">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/">Love It!</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="https://mailchi.mp/fa9b30c6bd38/flip-noorman-nieuwsbrief" class="c-nav-invert-button" target="_blank" ref="no-follow">Nieuwsbrief</a>
|
||||
<a href="/albums">Albums</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-page-section o-full" id="" style="padding-top: 150px">
|
||||
<div class="c-page-section__content">
|
||||
<p class="t-p1">
|
||||
Bedankt voor je bestelling.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
48
templates/song.html
Normal file
@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="/static/css/index.css?v4">
|
||||
<link rel="icon" type="image/png" href="/static/img/favicon.png" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav">
|
||||
<div class="nav__section nav__left">
|
||||
<a href="/albums#{{.album.Path}}">Terug</a>
|
||||
</div>
|
||||
<div class="nav__section nav__right">
|
||||
<a href="/">Zingt Leonard Cohen</a>
|
||||
<a href="/love-it">Love It!</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="c-page-section">
|
||||
<div class="c-page-section__content">
|
||||
<a class="t-h2" style="text-decoration: none; font-size: 26px; margin-bottom: 25px;" href="/albums#{{.album.Path}}">terug</a>
|
||||
<div></div>
|
||||
<h1 class="t-h1" style="margin-bottom: 15px;">
|
||||
{{.album.Name}} ({{.album.Release}})
|
||||
</h1>
|
||||
<div></div>
|
||||
<h1 class="t-h2">
|
||||
{{.song.Title}}
|
||||
</h1>
|
||||
<div style="margin-bottom: 35px;"></div>
|
||||
{{range .song.Lyrics}}
|
||||
<pre class="t-p1" style="margin-bottom: 25px; font-size: 24px;">
|
||||
{{- . -}}
|
||||
</pre>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<footer class="c-footer">
|
||||
<span>© {{.nowYear}} Flip Noorman </span>
|
||||
<span>info@flipnoorman.nl</span>
|
||||
</footer>
|
||||
<script src="/static/js/shared.js"></script>
|
||||
</body>
|
||||
</html>
|
||||