diff --git a/source/crossdomain.xml b/source/crossdomain.xml deleted file mode 100644 index df27266..0000000 --- a/source/crossdomain.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/source/cv.pdf b/source/cv.pdf deleted file mode 100644 index 7a9a11d..0000000 Binary files a/source/cv.pdf and /dev/null differ diff --git a/source/dn42-2.txt b/source/dn42-2.txt deleted file mode 100644 index 21d957c..0000000 --- a/source/dn42-2.txt +++ /dev/null @@ -1,14 +0,0 @@ -Endpoint: dn42-2.higgsboson.tk -Public IP for GRE: 2a03:b0c0:0:1010::3d:b001 -ASN: 4242420092 -Tech: IPSEC/GRE only via ipv6, tinc/openvpn also ipv4 -Internal IPs: 172.23.75.65 / fe80::93/64 - -Ipsec EC384: ------BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE37k1EY8RfNZNEQfG6WtZWPw2whj0hHdv -rN8OCbGeGWLncvtT3mCxAL3b9EpoxaDK4fvz02dcRPSPsDr8SN8NxLZYyQAjfgy/ -nw9DqgKhxI6Z4dQvsiCKuVH6zWpNcX2C ------END PUBLIC KEY----- - -Tinc ED25519: 5h4UU4iiH7IikZaXK0zthlkkiXgBlMECmbNpUr/JT2G diff --git a/source/dn42.txt b/source/dn42.txt deleted file mode 100644 index fcc6e58..0000000 --- a/source/dn42.txt +++ /dev/null @@ -1,33 +0,0 @@ -Endpoint: dn42.higgsboson.tk -Public IP for GRE: 2a03:4000:13:31e:1::1 -ASN: 4242420092 -Tech: IPSEC/GRE only over ipv6, tinc/openvpn/wireguard also ipv4 -Internal IPs: 172.23.75.1 / fe80::92/64 - -Wireguard: fxiGmHUK1aMa07cejTP3SHxYivIj3aXZwdvzTEXmYHM= - -Tinc ed25519: 5h4UU4iiH7IikZaXK0zthlkkiXgBlMECmbNpUr/JT2G - -Ipsec EC384: ------BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEEkDo2/LTNj67UXZzufqBgHKK3MQDAz1I -m474yvGRCyUHSqU/KfJrJzVmx3EwGm9CH5kOUeDyezx6W25q0SuTLvppqaMAc3ws -oJvvi8/4giWopUrSoLM9Tr3taHZ8JQKj ------END PUBLIC KEY----- - -Ipsec 4096 RSA: ------BEGIN PUBLIC KEY----- -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAu4E47rtn6yY4caxRbD5f -gWwg6NLClGAFab5KMWsWiVEwU03kWGeWC5sb0xDfUPuXY8tWyaHZFRsXaOObtT00 -M0XLNYK+6pYy7YqKAbbKZ388vrKn3t/TkFaGP6no/k+gIL9RD015wgG431oYY2z7 -zocrchwE5p+6ED1yICed1BYsuxlbTgdIZYNMbBOKFMswVF2vlEScMVSNCRHWwlUw -5KQCUf6GVYGKUjOnOhBymZPMUVHKnDdDv0ux3zSCwAyqmFxK75BprKGSRSJ5ctt2 -9+t9IgaV60cuMfn3Fb76eC6+TBHfySLV8f55zlQMbXekeHaJVq3zkbnHhmq1CZug -lpeiu3efTM4Tcmv4R1WY7Ufa84SuU959Zf6qAyG1P/IaL7jkLl2cr0dJ0D+dtLMh -vRHrfaaJcIf+BODO3ZrmdM71rE0jhsxIN2TY7lNkfuADicBt4qe0TBr7nb/h2YGY -2Ri+iB39D4LylhEbNt2ITde/9PXr1lGYS+w4WBxNooPp728n+V3N6tFhspIrYkFV -1ViIW9hCrJG4Pf1kPeQG5Uo9vh/4qH/ED6Rqi5S8CKMyY/Bi5XtnC4QLh+fJ2BTb -9bicgVa7ArEF0rly6dcI31sXTYk8VRkvzb139+swzL0bR0GPMogFc9ouYK8qN+mV -5W7maQ8UsMq2zHjpK/SPSZkCAwEAAQ== ------END PUBLIC KEY----- - diff --git a/source/favicon.ico b/source/favicon.ico deleted file mode 100644 index 8555960..0000000 Binary files a/source/favicon.ico and /dev/null differ diff --git a/source/fonts/fontawesome-webfont.afm b/source/fonts/fontawesome-webfont.afm deleted file mode 100644 index 99b84f0..0000000 --- a/source/fonts/fontawesome-webfont.afm +++ /dev/null @@ -1,44 +0,0 @@ -StartFontMetrics 2.0 -Comment Generated by FontForge 20110222 -Comment Creation Date: Sat Jan 5 16:32:52 2013 -FontName fontawesome -FullName fontawesome -FamilyName fontawesome -Weight Book -Notice (Copyright 2013 Adobe Systems Incorporated. All rights reserved.) -ItalicAngle 0 -IsFixedPitch false -UnderlinePosition -89 -UnderlineThickness 90 -Version 1.00 2012 -EncodingScheme ISO10646-1 -FontBBox 0 -144 1072 858 -Descender -2147483648 -StartCharMetrics 25 -C -1 ; WX 1000 ; N envelope ; B 0 -72 1000 715 ; -C -1 ; WX 928 ; N star ; B 0 -47 929 840 ; -C -1 ; WX 785 ; N user ; B 0 -72 786 786 ; -C -1 ; WX 785 ; N trash ; B 0 -72 786 786 ; -C -1 ; WX 928 ; N download_alt ; B 0 -72 929 715 ; -C -1 ; WX 857 ; N inbox ; B 0 0 858 715 ; -C -1 ; WX 642 ; N lock ; B 0 0 643 786 ; -C -1 ; WX 785 ; N qrcode ; B 0 0 786 786 ; -C -1 ; WX 1000 ; N edit ; B 0 0 996 786 ; -C -1 ; WX 1000 ; N comment ; B 0 -144 1000 715 ; -C -1 ; WX 1000 ; N key ; B 0 -103 940 786 ; -C -1 ; WX 1000 ; N comments ; B 0 -72 1000 715 ; -C -1 ; WX 857 ; N github_sign ; B 0 -72 858 786 ; -C -1 ; WX 928 ; N upload_alt ; B 0 -72 929 750 ; -C -1 ; WX 1071 ; N twitter ; B 0 -72 1047 786 ; -C -1 ; WX 857 ; N github ; B 0 -72 858 786 ; -C -1 ; WX 785 ; N rss ; B 0 0 786 786 ; -C -1 ; WX 857 ; N circle_arrow_left ; B 0 -72 858 786 ; -C -1 ; WX 857 ; N globe ; B 0 -72 858 786 ; -C -1 ; WX 1071 ; N group ; B 0 -143 1072 858 ; -C -1 ; WX 1071 ; N cloud ; B 0 0 1072 786 ; -C -1 ; WX 928 ; N google_plus ; B 0 -143 929 786 ; -C -1 ; WX 1000 ; N envelope_alt ; B 0 -72 1000 715 ; -C -1 ; WX 1000 ; N comment_alt ; B 0 -143 1000 715 ; -C -1 ; WX 928 ; N github_alt ; B 0 -72 929 715 ; -EndCharMetrics -EndFontMetrics diff --git a/source/fonts/fontawesome-webfont.eot b/source/fonts/fontawesome-webfont.eot deleted file mode 100644 index 251a515..0000000 Binary files a/source/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/source/fonts/fontawesome-webfont.ttf b/source/fonts/fontawesome-webfont.ttf deleted file mode 100644 index fac131a..0000000 Binary files a/source/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/source/fonts/fontawesome-webfont.woff b/source/fonts/fontawesome-webfont.woff deleted file mode 100644 index 04e15ce..0000000 Binary files a/source/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/source/fonts/mensch.eot b/source/fonts/mensch.eot deleted file mode 100644 index 7a6fd22..0000000 Binary files a/source/fonts/mensch.eot and /dev/null differ diff --git a/source/fonts/mensch.svg b/source/fonts/mensch.svg deleted file mode 100644 index d2dece2..0000000 --- a/source/fonts/mensch.svg +++ /dev/null @@ -1,8889 +0,0 @@ - - - - -Created by FontForge 20090914 at Fri Jul 27 10:28:38 2012 - By www-data -Copyright `2010 Robey Pointer. Copyright `2009 Apple Inc. Copyright `2006 by Tavmjong Bah. Copyright `2003 by Bitstream, Inc. All Rights Reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/fonts/mensch.ttf b/source/fonts/mensch.ttf deleted file mode 100644 index 2ead72a..0000000 Binary files a/source/fonts/mensch.ttf and /dev/null differ diff --git a/source/fonts/mensch.woff b/source/fonts/mensch.woff deleted file mode 100644 index 0d4aa42..0000000 Binary files a/source/fonts/mensch.woff and /dev/null differ diff --git a/source/humans.txt b/source/humans.txt deleted file mode 100644 index 72bebd4..0000000 --- a/source/humans.txt +++ /dev/null @@ -1,23 +0,0 @@ -/* the humans responsible & colophon */ -/* humanstxt.org */ - - -/* TEAM */ - IOS Programmer: Albert Schulz <--- hire this guy - Twitter: @albert_sn - Location: Germany - - Programmer & Admin: Jörg Thalheim - Twitter: @Mic_92 - Location: Germany - -/* THANKS */ - Names (& URL): - -/* SITE */ - Last update: 2012/08/10 - Standards: HTML5, CSS3 - Css Framework: pure (http://purecss.io) - Fonts: Lobster, Cabin - Software: middleman, sass, slim - IDE: vim diff --git a/source/images/github.png b/source/images/github.png deleted file mode 100644 index 544f0ed..0000000 Binary files a/source/images/github.png and /dev/null differ diff --git a/source/images/logo.png b/source/images/logo.png deleted file mode 100644 index 1e30b6c..0000000 Binary files a/source/images/logo.png and /dev/null differ diff --git a/source/images/mail.png b/source/images/mail.png deleted file mode 100644 index dd32c3a..0000000 Binary files a/source/images/mail.png and /dev/null differ diff --git a/source/images/spritemap.png b/source/images/spritemap.png deleted file mode 100644 index 9f21314..0000000 Binary files a/source/images/spritemap.png and /dev/null differ diff --git a/source/images/spritemap@2x.png b/source/images/spritemap@2x.png deleted file mode 100644 index e877eea..0000000 Binary files a/source/images/spritemap@2x.png and /dev/null differ diff --git a/source/images/twitter.png b/source/images/twitter.png deleted file mode 100644 index d660e1a..0000000 Binary files a/source/images/twitter.png and /dev/null differ diff --git a/source/impressum.html.slim b/source/impressum.html.slim deleted file mode 100644 index 066ead2..0000000 --- a/source/impressum.html.slim +++ /dev/null @@ -1,223 +0,0 @@ -.container - h1 Impressum - p Angaben gemäß § 5 TMG: - p - | Albert Schulz - br/ - | Hauptstraße 25 - br/ - | 01097 Dresden - br/ - h2 Kontakt: - table.pure-table summary="How to contact us" - tr - td - p Telefon: - td - p 0176 / 30329588 - tr - td - p Telefax: - td - p - - tr - td - p E-Mail: - td - p albert.schulz@me.com - p - ' Quelle: - i Impressumsgenerator, - ' Rechtsanwalt für - a href="http://www.e-recht24.de" Sören Siebert - h2 Haftungsausschluss: - p - strong Haftung für Inhalte - p - ' Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. - Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte - können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für - eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. - Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht - verpflichtet, übermittelte oder gespeicherte fremde Informationen zu - überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige - Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der - Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon - unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem - Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei - Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte - umgehend entfernen. - p - strong Haftung für Links - p - ' Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren - Inhalte wir keinen Einfluss haben. Deshalb können wir für diese - fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte - der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der - Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung - auf mögliche Rechtsverstöße überprüft. Rechtswidrige - Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente - inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte - einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen - werden wir derartige Links umgehend entfernen. - p - strong Urheberrecht - p - ' Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten - unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und - jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen - der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads - und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen - Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, - werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche - gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. - Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen. - p - strong Datenschutz - p - ' Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, - Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben. - p - ' Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. - bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. - Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht - möglich. - p - ' Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten - durch Dritte zur Übersendung von nicht ausdrücklich angeforderter - Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. - Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte - im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, - vor. - p - strong - ' Datenschutzerklärung für die Nutzung von Facebook-Plugins - (Like-Button) - p - ' Auf unseren Seiten sind Plugins des sozialen Netzwerks Facebook, - 1601 South California Avenue, Palo Alto, CA 94304, USA integriert. - Die Facebook-Plugins erkennen Sie an dem Facebook-Logo oder - dem "Like-Button" ("Gefällt mir") auf unserer Seite. Eine Übersicht - über die Facebook-Plugins finden Sie hier: - a href="http://developers.facebook.com/docs/plugins/" target="_blank" http://developers.facebook.com/docs/plugins/ - - br/ - ' Wenn Sie unsere Seiten - besuchen, wird über das Plugin eine direkte Verbindung zwischen Ihrem - Browser und dem Facebook-Server hergestellt. Facebook erhält dadurch - die Information, dass Sie mit Ihrer IP-Adresse unsere Seite - besucht haben. Wenn Sie den Facebook "Like-Button" anklicken während - Sie in Ihrem Facebook-Account eingeloggt sind, können Sie die Inhalte - unserer Seiten auf Ihrem Facebook-Profil verlinken. Dadurch kann - Facebook den Besuch unserer Seiten Ihrem Benutzerkonto zuordnen. Wir - weisen darauf hin, dass wir als Anbieter der Seiten keine Kenntnis vom - Inhalt der übermittelten Daten sowie deren Nutzung durch Facebook - erhalten. Weitere Informationen hierzu finden Sie in der - Datenschutzerklärung von facebook unter - a href="http://de-de.facebook.com/policy.php" target="_blank" http://de-de.facebook.com/policy.php - p - ' Wenn Sie nicht wünschen, dass Facebook den Besuch unserer Seiten Ihrem - Facebook-Nutzerkonto zuordnen kann, loggen Sie sich bitte aus Ihrem - Facebook-Benutzerkonto aus. - p - strong Datenschutzerklärung für die Nutzung von Google Adsense - p - ' Diese Website benutzt Google AdSense, einen Dienst zum Einbinden - von Werbeanzeigen der Google Inc. ("Google"). Google AdSense - verwendet sog. "Cookies", Textdateien, die auf Ihrem Computer - gespeichert werden und die eine Analyse der Benutzung der Website - ermöglicht. Google AdSense verwendet auch so genannte Web Beacons - (unsichtbare Grafiken). Durch diese Web Beacons können Informationen - wie der Besucherverkehr auf diesen Seiten ausgewertet werden. - p - ' Die durch Cookies und Web Beacons erzeugten Informationen über - die Benutzung dieser Website (einschließlich Ihrer IP-Adresse) und - Auslieferung von Werbeformaten werden an einen Server von Google - in den USA übertragen und dort gespeichert. Diese Informationen können - von Google an Vertragspartner von Google weiter gegeben werden. - Google wird Ihre IP-Adresse jedoch nicht mit anderen von Ihnen - gespeicherten Daten zusammenführen. - p - ' Sie können die Installation der Cookies durch eine entsprechende - Einstellung Ihrer Browser Software verhindern; wir weisen Sie jedoch - darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche - Funktionen dieser Website voll umfänglich nutzen können. Durch die - Nutzung dieser Website erklären Sie sich mit der Bearbeitung der - über Sie erhobenen Daten durch Google in der zuvor beschriebenen - Art und Weise und zu dem zuvor benannten Zweck einverstanden. - p - strong Datenschutzerklärung für die Nutzung von Google +1 - p - i Erfassung und Weitergabe von Informationen: - br/ - ' Mithilfe der Google +1-Schaltfläche können Sie Informationen weltweit - veröffentlichen. über die Google +1-Schaltfläche erhalten Sie und andere - Nutzer personalisierte Inhalte von Google und unseren Partnern. Google - speichert sowohl die Information, dass Sie für einen Inhalt +1 gegeben - haben, als auch Informationen über die Seite, die Sie beim Klicken auf - +1 angesehen haben. Ihre +1 können als Hinweise zusammen mit Ihrem - Profilnamen und Ihrem Foto in Google-Diensten, wie etwa in - Suchergebnissen oder in Ihrem Google-Profil, oder an anderen Stellen auf - Websites und Anzeigen im Internet eingeblendet werden. - br/ - ' Google zeichnet Informationen über Ihre +1-Aktivitäten auf, um die - Google-Dienste für Sie und andere zu verbessern. Um die Google - +1-Schaltfläche verwenden zu können, benötigen Sie ein weltweit - sichtbares, öffentliches Google-Profil, das zumindest den für das - Profil gewählten Namen enthalten muss. Dieser Name wird in allen - Google-Diensten verwendet. In manchen Fällen kann dieser Name auch - einen anderen Namen ersetzen, den Sie beim Teilen von Inhalten über - Ihr Google-Konto verwendet haben. Die Identität Ihres Google-Profils - kann Nutzern angezeigt werden, die Ihre E-Mail-Adresse kennen oder - über andere identifizierende Informationen von Ihnen verfügen. - br/ - br/ - i Verwendung der erfassten Informationen: - br/ - ' Neben den oben erläuterten Verwendungszwecken werden die von Ihnen - bereitgestellten Informationen gemäß den geltenden - Google-Datenschutzbestimmungen genutzt. Google veröffentlicht - möglicherweise zusammengefasste Statistiken über die +1-Aktivitäten - der Nutzer bzw. gibt diese an Nutzer und Partner weiter, wie etwa - Publisher, Inserenten oder verbundene Websites. - p - strong Datenschutzerklärung für die Nutzung von Twitter - p - ' Auf unseren Seiten sind Funktionen des Dienstes Twitter eingebunden. - Diese Funktionen werden angeboten durch die Twitter Inc., 795 - Folsom St., Suite 600, San Francisco, CA 94107, USA. Durch das Benutzen - von Twitter und der Funktion "Re-Tweet" werden die von Ihnen - besuchten Webseiten mit Ihrem Twitter-Account verknüpft und anderen - Nutzern bekannt gegeben. Dabei werden auch Daten an Twitter übertragen. - p - ' Wir weisen darauf hin, dass wir als Anbieter der Seiten keine - Kenntnis vom Inhalt der übermittelten Daten sowie deren Nutzung durch - Twitter erhalten. Weitere Informationen hierzu finden Sie in der - Datenschutzerklärung von Twitter unter - a href="http://twitter.com/privacy" target="_blank" - | http://twitter.com/privacy - p - ' Ihre Datenschutzeinstellungen bei Twitter können Sie in den - ' Konto-Einstellungen unter - a href="http://twitter.com/account/settings" target="_blank" - | http://twitter.com/account/settings - ' ändern. - p - strong Piwik - /! piwik - iframe frameborder="no" height="250px" src="//piwik.higgsboson.tk/index.php?module=CoreAdminHome&action=optOut&language=de" width="600px" - /! piwik - p - strong Quellen: - ul - li - a href="http://www.e-recht24.de/muster-disclaimer.htm" target="_blank" Disclaimer eRecht24 - li - a href="http://www.e-recht24.de/artikel/datenschutz/6590-facebook-like-button-datenschutz-disclaimer.html" target="_blank" Facebook Disclaimer - li - a href="http://www.e-recht24.de/artikel/datenschutz/6635-datenschutz-rechtliche-risiken-bei-der-nutzung-von-google-analytics-und-googleadsense.html" target="_blank" eRecht24 Datenschutzerklärung Google Adsense - li - a href="http://www.google.com/intl/de/+/policy/+1button.html" target="_blank" Datenschutzerklärung für Google +1 - li - a href="http://twitter.com/privacy" target="_blank" Twitter Bedingungen - diff --git a/source/inbox/DropboxUploader.php b/source/inbox/DropboxUploader.php deleted file mode 100644 index a833246..0000000 --- a/source/inbox/DropboxUploader.php +++ /dev/null @@ -1,164 +0,0 @@ -email = $email; - $this->password = $password; - } - - public function setCaCertificateFile($file) - { - $this->caCertSourceType = self::CACERT_SOURCE_FILE; - $this->caCertSource = $file; - } - - public function setCaCertificateDir($dir) - { - $this->caCertSourceType = self::CACERT_SOURCE_DIR; - $this->caCertSource = $dir; - } - - public function upload($source, $remoteDir='/', $remoteName=null) { - if (!is_file($source) or !is_readable($source)) - throw new Exception("File '$source' does not exist or is not readable."); - - if (!is_string($remoteDir)) - throw new Exception("Remote directory must be a string, is ".gettype($remoteDir)." instead."); - - if (is_null($remoteName)) { - # intentionally left blank - } else if (!is_string($remoteName)) { - throw new Exception("Remote filename must be a string, is ".gettype($remoteDir)." instead."); - } else { - $source .= ';filename='.$remoteName; - } - - if (!$this->loggedIn) - $this->login(); - - $data = $this->request('https://www.dropbox.com/home'); - $token = $this->extractToken($data, 'https://dl-web.dropbox.com/upload'); - - - $postData = array('plain'=>'yes', 'file'=>'@'.$source, 'dest'=>$remoteDir, 't'=>$token); - $data = $this->request('https://dl-web.dropbox.com/upload', true, $postData); - if (strpos($data, 'HTTP/1.1 302 FOUND') === false) - throw new Exception('Upload failed!'); - } - - protected function login() { - $data = $this->request('https://www.dropbox.com/login'); - $token = $this->extractTokenFromLoginForm($data); - - $postData = array('login_email'=>$this->email, 'login_password'=>$this->password, 't'=>$token); - $data = $this->request('https://www.dropbox.com/login', true, $postData); - - if (stripos($data, 'location: /home') === false) - throw new Exception('Login unsuccessful.'); - - $this->loggedIn = true; - } - - protected function request($url, $post=false, $postData=array()) { - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); - switch ($this->caCertSourceType) { - case self::CACERT_SOURCE_FILE: - curl_setopt($ch, CURLOPT_CAINFO, $this->caCertSource); - break; - case self::CACERT_SOURCE_DIR: - curl_setopt($ch, CURLOPT_CAPATH, $this->caCertSource); - break; - } - curl_setopt($ch, CURLOPT_HEADER, 1); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - if ($post) { - curl_setopt($ch, CURLOPT_POST, $post); - curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); - } - - // Send cookies - $rawCookies = array(); - foreach ($this->cookies as $k=>$v) - $rawCookies[] = "$k=$v"; - $rawCookies = implode(';', $rawCookies); - curl_setopt($ch, CURLOPT_COOKIE, $rawCookies); - - $data = curl_exec($ch); - - if ($data === false) { - throw new Exception(sprintf('Curl error: (#%d) %s', curl_errno($ch), curl_error($ch))); - } - - // Store received cookies - preg_match_all('/Set-Cookie: ([^=]+)=(.*?);/i', $data, $matches, PREG_SET_ORDER); - foreach ($matches as $match) - $this->cookies[$match[1]] = $match[2]; - - curl_close($ch); - - return $data; - } - - protected function extractTokenFromLoginForm($html) { - // - if (!preg_match('##', $html, $matches)) - throw new Exception('Cannot extract login CSRF token.'); - return $matches[1]; - } - - protected function extractToken($html, $formAction) { - if (!preg_match('/
]*'.preg_quote($formAction, '/').'[^>]*>.*?(]*name="t" [^>]*value="(.*?)"[^>]*>).*?<\/form>/is', $html, $matches) || !isset($matches[2])) - throw new Exception("Cannot extract token! (form action=$formAction)"); - return $matches[2]; - } - -} diff --git a/source/inbox/index.html.slim b/source/inbox/index.html.slim deleted file mode 100644 index 17d784f..0000000 --- a/source/inbox/index.html.slim +++ /dev/null @@ -1,6 +0,0 @@ -== javascript_include_tag "dropzone.js" - -h1 Inbox -p All uploaded files are sent to us -p - form#my-awesome-dropzone.dropzone.clickable action="/upload" diff --git a/source/inbox/upload.php b/source/inbox/upload.php deleted file mode 100644 index 6ccaf4f..0000000 --- a/source/inbox/upload.php +++ /dev/null @@ -1,62 +0,0 @@ -upload($src, $dest, $filename); - } catch (Exception $e) { - $stored_exc = $e; // workaround missing finally-block - } - - if (isset($stored_exc)) { - throw($stored_exc); - } -}; - -if ($_POST) { - try { - if (isset($_POST['dest'])) { - $dest = $_POST['dest']; - } else { - $dest = ""; - } - $file = "../../dropbox-secret.ini"; - if (file_exists($file) && is_readable($file)) { - $secret = parse_ini_file($file); - $email = $secret["email"]; - $password = $secret["password"]; - upload($_POST['file_path'], $_POST['file_name'], $dest, - $email, $password); - echo 'File successfully uploaded to your Dropbox!'; - } else { - echo("$file not readable"); - } - } catch(Exception $e) { - #http_response_code(404); - echo 'Error: ' . htmlspecialchars($e->getMessage()); - } - - if (isset($file) && file_exists($file)) { - unlink($file); - } -} -?> diff --git a/source/index.html.slim b/source/index.html.slim deleted file mode 100644 index 888c5f3..0000000 --- a/source/index.html.slim +++ /dev/null @@ -1,44 +0,0 @@ -.hero - h1#pagetitle Higgs-Boson - h2#pagesubtitle - ' by Albert - span.amp &  - ' Jörg - -section - ul.overview.icons - li - i.icon-rss.icon-2x - span - a href="http://blog.higgsboson.tk" title="My little Techblog" Blog - li - i.icon-edit.icon-2x - span - a href="http://pad.higgsboson.tk" title="collaborative editing" Etherpad Lite - li - i.icon-comments.icon-2x - span - == link_to "Jabber", "/jabber", title: "Our jabber server" - li - i.icon-github-sign.icon-2x - span - a href="http://git.higgsboson.tk/explore/projects" title="Webinterface to our public git repos" Gitlab - / TODO: readd nginx upload module - /li - / i.icon-inbox.icon-2x - / span - / == link_to "Inbox", "/inbox", title: "Send us your files" - li - i.icon-download-alt.icon-2x - span - a href="http://ftp.higgsboson.tk" title="Some static files" Files - li - i.icon-qrcode.icon-2x - span - == link_to "QR-Code Generator", "/qr", title: "html5 qr-code generator" - li - i.icon-lock.icon-2x - span - == link_to "Private", "/privat.html", title: "Internal pages" - -a style="visibility: false;" href='https://alpha.app.net/mic92' rel='me' diff --git a/source/jabber/index.html.slim b/source/jabber/index.html.slim deleted file mode 100644 index c424557..0000000 --- a/source/jabber/index.html.slim +++ /dev/null @@ -1,49 +0,0 @@ --content_for(:head) - link rel="stylesheet" type="text/css" media="screen" href="https://cdn.conversejs.org/css/converse.min.css" - script src="https://cdn.conversejs.org/dist/converse.min.js" -javascript: - require(['converse'], function (converse) { - converse.initialize({ - auto_list_rooms: false, - auto_subscribe: false, - bosh_service_url: '/http-bind/', - hide_muc_server: false, - i18n: locales.en, - prebind: false, - show_controlbox_by_default: true, - xhr_user_search: false - }); - }); -h1 Our Jabber-Server - -h2 Connection information -p Open for registration! - -table.pure-table.pure-table-bordered summary="Connection information" - tr - td Server Address: - td higgsboson.tk - tr - td - ' MUC: - br - '(Chat Rooms) - td muc.higgsboson.tk - tr - td - ' File Proxy: - br - ' (to send files) - td proxy.higgsboson.tk:5000 - -p - ' Don't have a jabber client? - ' Just visit our - a href="http://muc.higgsboson.tk/" browser-based chat - -#chatpanel - #collective-xmpp-chat-data" - #toggle-controlbox - a href="#" class="chat toggle-online-users" - strong.conn-feedback Toggle chat - strong#online-count style="display: none" (0) diff --git a/source/javascripts/dropzone.js b/source/javascripts/dropzone.js deleted file mode 100644 index ed58558..0000000 --- a/source/javascripts/dropzone.js +++ /dev/null @@ -1,1185 +0,0 @@ -;(function(){ - - -/** - * hasOwnProperty. - */ - -var has = Object.prototype.hasOwnProperty; - -/** - * Require the given path. - * - * @param {String} path - * @return {Object} exports - * @api public - */ - -function require(path, parent, orig) { - var resolved = require.resolve(path); - - // lookup failed - if (null == resolved) { - orig = orig || path; - parent = parent || 'root'; - var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); - err.path = orig; - err.parent = parent; - err.require = true; - throw err; - } - - var module = require.modules[resolved]; - - // perform real require() - // by invoking the module's - // registered function - if (!module.exports) { - module.exports = {}; - module.client = module.component = true; - module.call(this, module.exports, require.relative(resolved), module); - } - - return module.exports; -} - -/** - * Registered modules. - */ - -require.modules = {}; - -/** - * Registered aliases. - */ - -require.aliases = {}; - -/** - * Resolve `path`. - * - * Lookup: - * - * - PATH/index.js - * - PATH.js - * - PATH - * - * @param {String} path - * @return {String} path or null - * @api private - */ - -require.resolve = function(path) { - if (path.charAt(0) === '/') path = path.slice(1); - var index = path + '/index.js'; - - var paths = [ - path, - path + '.js', - path + '.json', - path + '/index.js', - path + '/index.json' - ]; - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - if (has.call(require.modules, path)) return path; - } - - if (has.call(require.aliases, index)) { - return require.aliases[index]; - } -}; - -/** - * Normalize `path` relative to the current path. - * - * @param {String} curr - * @param {String} path - * @return {String} - * @api private - */ - -require.normalize = function(curr, path) { - var segs = []; - - if ('.' != path.charAt(0)) return path; - - curr = curr.split('/'); - path = path.split('/'); - - for (var i = 0; i < path.length; ++i) { - if ('..' == path[i]) { - curr.pop(); - } else if ('.' != path[i] && '' != path[i]) { - segs.push(path[i]); - } - } - - return curr.concat(segs).join('/'); -}; - -/** - * Register module at `path` with callback `definition`. - * - * @param {String} path - * @param {Function} definition - * @api private - */ - -require.register = function(path, definition) { - require.modules[path] = definition; -}; - -/** - * Alias a module definition. - * - * @param {String} from - * @param {String} to - * @api private - */ - -require.alias = function(from, to) { - if (!has.call(require.modules, from)) { - throw new Error('Failed to alias "' + from + '", it does not exist'); - } - require.aliases[to] = from; -}; - -/** - * Return a require function relative to the `parent` path. - * - * @param {String} parent - * @return {Function} - * @api private - */ - -require.relative = function(parent) { - var p = require.normalize(parent, '..'); - - /** - * lastIndexOf helper. - */ - - function lastIndexOf(arr, obj) { - var i = arr.length; - while (i--) { - if (arr[i] === obj) return i; - } - return -1; - } - - /** - * The relative require() itself. - */ - - function localRequire(path) { - var resolved = localRequire.resolve(path); - return require(resolved, parent, path); - } - - /** - * Resolve relative to the parent. - */ - - localRequire.resolve = function(path) { - var c = path.charAt(0); - if ('/' == c) return path.slice(1); - if ('.' == c) return require.normalize(p, path); - - // resolve deps by returning - // the dep in the nearest "deps" - // directory - var segs = parent.split('/'); - var i = lastIndexOf(segs, 'deps') + 1; - if (!i) i = 0; - path = segs.slice(0, i + 1).join('/') + '/deps/' + path; - return path; - }; - - /** - * Check if module is defined at `path`. - */ - - localRequire.exists = function(path) { - return has.call(require.modules, localRequire.resolve(path)); - }; - - return localRequire; -}; -require.register("component-emitter/index.js", function(exports, require, module){ - -/** - * Expose `Emitter`. - */ - -module.exports = Emitter; - -/** - * Initialize a new `Emitter`. - * - * @api public - */ - -function Emitter(obj) { - if (obj) return mixin(obj); -}; - -/** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} - -/** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.on = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; -}; - -/** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; - - function on() { - self.off(event, on); - fn.apply(this, arguments); - } - - fn._off = on; - this.on(event, on); - return this; -}; - -/** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.off = -Emitter.prototype.removeListener = -Emitter.prototype.removeAllListeners = function(event, fn){ - this._callbacks = this._callbacks || {}; - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } - - // remove specific handler - var i = callbacks.indexOf(fn._off || fn); - if (~i) callbacks.splice(i, 1); - return this; -}; - -/** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; -}; - -/** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; -}; - -/** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; - -}); -require.register("dropzone/index.js", function(exports, require, module){ - - -/** - * Exposing dropzone - */ -module.exports = require("./lib/dropzone.js"); - -}); -require.register("dropzone/lib/dropzone.js", function(exports, require, module){ -/* -# -# More info at [www.dropzonejs.com](http://www.dropzonejs.com) -# -# Copyright (c) 2012, Matias Meno -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -*/ - - -(function() { - var Dropzone, Em, camelize, contentLoaded, createElement, noop, without, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - __slice = [].slice, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - - Em = typeof Emitter !== "undefined" && Emitter !== null ? Emitter : require("emitter"); - - noop = function() {}; - - Dropzone = (function(_super) { - __extends(Dropzone, _super); - - /* - This is a list of all available events you can register on a dropzone object. - - You can register an event handler like this: - - dropzone.on("dragEnter", function() { }); - */ - - - Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "selectedfiles", "addedfile", "removedfile", "thumbnail", "error", "processingfile", "uploadprogress", "sending", "success", "complete", "reset"]; - - Dropzone.prototype.defaultOptions = { - url: null, - method: "post", - parallelUploads: 2, - maxFilesize: 256, - paramName: "file", - createImageThumbnails: true, - maxThumbnailFilesize: 2, - thumbnailWidth: 100, - thumbnailHeight: 100, - params: {}, - clickable: true, - enqueueForUpload: true, - previewsContainer: null, - dictDefaultMessage: "Drop files here to upload", - dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.", - dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.", - accept: function(file, done) { - return done(); - }, - init: function() { - return noop; - }, - fallback: function() { - var child, messageElement, span, _i, _len, _ref; - - this.element.className = "" + this.element.className + " browser-not-supported"; - _ref = this.element.getElementsByTagName("div"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - if (/(^| )message($| )/.test(child.className)) { - messageElement = child; - child.className = "message"; - continue; - } - } - if (!messageElement) { - messageElement = createElement("
"); - this.element.appendChild(messageElement); - } - span = messageElement.getElementsByTagName("span")[0]; - if (span) { - span.textContent = this.options.dictFallbackMessage; - } - return this.element.appendChild(this.getFallbackForm()); - }, - /* - Those functions register themselves to the events on init and handle all - the user interface specific stuff. Overwriting them won't break the upload - but can break the way it's displayed. - You can overwrite them if you don't like the default behavior. If you just - want to add an additional event handler, register it on the dropzone object - and don't overwrite those options. - */ - - drop: function(e) { - return this.element.classList.remove("drag-hover"); - }, - dragstart: noop, - dragend: function(e) { - return this.element.classList.remove("drag-hover"); - }, - dragenter: function(e) { - return this.element.classList.add("drag-hover"); - }, - dragover: function(e) { - return this.element.classList.add("drag-hover"); - }, - dragleave: function(e) { - return this.element.classList.remove("drag-hover"); - }, - selectedfiles: function(files) { - if (this.element === this.previewsContainer) { - return this.element.classList.add("started"); - } - }, - reset: function() { - return this.element.classList.remove("started"); - }, - addedfile: function(file) { - file.previewTemplate = createElement(this.options.previewTemplate); - this.previewsContainer.appendChild(file.previewTemplate); - file.previewTemplate.querySelector(".filename span").textContent = file.name; - return file.previewTemplate.querySelector(".details").appendChild(createElement("
" + (this.filesize(file.size)) + "
")); - }, - removedfile: function(file) { - return file.previewTemplate.parentNode.removeChild(file.previewTemplate); - }, - thumbnail: function(file, dataUrl) { - file.previewTemplate.classList.remove("file-preview"); - file.previewTemplate.classList.add("image-preview"); - return file.previewTemplate.querySelector(".details").appendChild(createElement("\""")); - }, - error: function(file, message) { - file.previewTemplate.classList.add("error"); - return file.previewTemplate.querySelector(".error-message span").textContent = message; - }, - processingfile: function(file) { - return file.previewTemplate.classList.add("processing"); - }, - uploadprogress: function(file, progress) { - return file.previewTemplate.querySelector(".progress .upload").style.width = "" + progress + "%"; - }, - sending: noop, - success: function(file) { - return file.previewTemplate.classList.add("success"); - }, - complete: noop, - previewTemplate: "
\n
\n
\n
\n
\n
✔
\n
✘
\n
\n
" - }; - - function Dropzone(element, options) { - var elementId, elementOptions, extend, fallback, _ref; - - this.element = element; - this.version = Dropzone.version; - this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, ""); - if (typeof this.element === "string") { - this.element = document.querySelector(this.element); - } - if (!(this.element && (this.element.nodeType != null))) { - throw new Error("Invalid dropzone element."); - } - if (Dropzone.forElement(this.element)) { - throw new Error("Dropzone already attached."); - } - Dropzone.instances.push(this); - elementId = this.element.id; - elementOptions = (_ref = (elementId ? Dropzone.options[camelize(elementId)] : void 0)) != null ? _ref : {}; - extend = function() { - var key, object, objects, target, val, _i, _len; - - target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - for (_i = 0, _len = objects.length; _i < _len; _i++) { - object = objects[_i]; - for (key in object) { - val = object[key]; - target[key] = val; - } - } - return target; - }; - this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {}); - if (this.options.url == null) { - this.options.url = this.element.action; - } - if (!this.options.url) { - throw new Error("No URL provided."); - } - this.options.method = this.options.method.toUpperCase(); - if (!Dropzone.isBrowserSupported()) { - return this.options.fallback.call(this); - } - if ((fallback = this.getExistingFallback()) && fallback.parentNode) { - fallback.parentNode.removeChild(fallback); - } - if (this.options.previewsContainer) { - if (typeof this.options.previewsContainer === "string") { - this.previewsContainer = document.querySelector(this.options.previewsContainer); - } else if (this.options.previewsContainer.nodeType != null) { - this.previewsContainer = this.options.previewsContainer; - } - if (this.previewsContainer == null) { - throw new Error("Invalid `previewsContainer` option provided. Please provide a CSS selector or a plain HTML element."); - } - } else { - this.previewsContainer = this.element; - } - this.init(); - } - - Dropzone.prototype.init = function() { - var eventName, noPropagation, _i, _len, _ref, _ref1, - _this = this; - - if (this.element.tagName === "form") { - this.element.setAttribute("enctype", "multipart/form-data"); - } - if (this.element.classList.contains("dropzone") && !this.element.querySelector(".message")) { - this.element.appendChild(createElement("
" + this.options.dictDefaultMessage + "
")); - } - if (this.options.clickable) { - this.hiddenFileInput = document.createElement("input"); - this.hiddenFileInput.setAttribute("type", "file"); - this.hiddenFileInput.setAttribute("multiple", "multiple"); - this.hiddenFileInput.style.display = "none"; - document.body.appendChild(this.hiddenFileInput); - this.hiddenFileInput.addEventListener("change", function() { - var files; - - files = _this.hiddenFileInput.files; - if (files.length) { - _this.emit("selectedfiles", files); - return _this.handleFiles(files); - } - }); - } - this.files = []; - this.filesQueue = []; - this.filesProcessing = []; - this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL; - _ref1 = this.events; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - eventName = _ref1[_i]; - this.on(eventName, this.options[eventName]); - } - noPropagation = function(e) { - e.stopPropagation(); - if (e.preventDefault) { - return e.preventDefault(); - } else { - return e.returnValue = false; - } - }; - this.listeners = { - "dragstart": function(e) { - return _this.emit("dragstart", e); - }, - "dragenter": function(e) { - noPropagation(e); - return _this.emit("dragenter", e); - }, - "dragover": function(e) { - noPropagation(e); - return _this.emit("dragover", e); - }, - "dragleave": function(e) { - return _this.emit("dragleave", e); - }, - "drop": function(e) { - noPropagation(e); - _this.drop(e); - return _this.emit("drop", e); - }, - "dragend": function(e) { - return _this.emit("dragend", e); - }, - "click": function(evt) { - if (!_this.options.clickable) { - return; - } - if (evt.target === _this.element || evt.target === _this.element.querySelector(".message")) { - return _this.hiddenFileInput.click(); - } - } - }; - this.enable(); - return this.options.init.call(this); - }; - - Dropzone.prototype.getFallbackForm = function() { - var existingFallback, fields, fieldsString, form; - - if (existingFallback = this.getExistingFallback()) { - return existingFallback; - } - fieldsString = "
"; - if (this.options.dictFallbackText) { - fieldsString += "

" + this.options.dictFallbackText + "

"; - } - fieldsString += "
"; - fields = createElement(fieldsString); - if (this.element.tagName !== "FORM") { - form = createElement("
"); - form.appendChild(fields); - } else { - this.element.setAttribute("enctype", "multipart/form-data"); - this.element.setAttribute("method", this.options.method); - } - return form != null ? form : fields; - }; - - Dropzone.prototype.getExistingFallback = function() { - var fallback, getFallback, tagName, _i, _len, _ref; - - getFallback = function(elements) { - var el, _i, _len; - - for (_i = 0, _len = elements.length; _i < _len; _i++) { - el = elements[_i]; - if (/(^| )fallback($| )/.test(el.className)) { - return el; - } - } - }; - _ref = ["div", "form"]; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - tagName = _ref[_i]; - if (fallback = getFallback(this.element.getElementsByTagName("div"))) { - return fallback; - } - } - }; - - Dropzone.prototype.setupEventListeners = function() { - var event, listener, _ref, _results; - - _ref = this.listeners; - _results = []; - for (event in _ref) { - listener = _ref[event]; - _results.push(this.element.addEventListener(event, listener, false)); - } - return _results; - }; - - Dropzone.prototype.removeEventListeners = function() { - var event, listener, _ref, _results; - - _ref = this.listeners; - _results = []; - for (event in _ref) { - listener = _ref[event]; - _results.push(this.element.removeEventListener(event, listener, false)); - } - return _results; - }; - - Dropzone.prototype.disable = function() { - if (this.options.clickable) { - this.element.classList.remove("clickable"); - } - this.removeEventListeners(); - this.filesProcessing = []; - return this.filesQueue = []; - }; - - Dropzone.prototype.enable = function() { - if (this.options.clickable) { - this.element.classList.add("clickable"); - } - return this.setupEventListeners(); - }; - - Dropzone.prototype.filesize = function(size) { - var string; - - if (size >= 100000000000) { - size = size / 100000000000; - string = "TB"; - } else if (size >= 100000000) { - size = size / 100000000; - string = "GB"; - } else if (size >= 100000) { - size = size / 100000; - string = "MB"; - } else if (size >= 100) { - size = size / 100; - string = "KB"; - } else { - size = size * 10; - string = "b"; - } - return "" + (Math.round(size) / 10) + " " + string; - }; - - Dropzone.prototype.drop = function(e) { - var files; - - if (!e.dataTransfer) { - return; - } - files = e.dataTransfer.files; - this.emit("selectedfiles", files); - if (files.length) { - return this.handleFiles(files); - } - }; - - Dropzone.prototype.handleFiles = function(files) { - var file, _i, _len, _results; - - _results = []; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - _results.push(this.addFile(file)); - } - return _results; - }; - - Dropzone.prototype.accept = function(file, done) { - if (file.size > this.options.maxFilesize * 1024 * 1024) { - return done("File is too big (" + (Math.round(file.size / 1024 / 10.24) / 100) + "MB). Max filesize: " + this.options.maxFilesize + "MB"); - } else { - return this.options.accept.call(this, file, done); - } - }; - - Dropzone.prototype.addFile = function(file) { - var _this = this; - - this.files.push(file); - this.emit("addedfile", file); - if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) { - this.createThumbnail(file); - } - return this.accept(file, function(error) { - if (error) { - return _this.errorProcessing(file, error); - } else { - if (_this.options.enqueueForUpload) { - _this.filesQueue.push(file); - return _this.processQueue(); - } - } - }); - }; - - Dropzone.prototype.removeFile = function(file) { - if (file.processing) { - throw new Error("Can't remove file currently processing"); - } - this.files = without(this.files, file); - this.filesQueue = without(this.filesQueue, file); - this.emit("removedfile", file); - if (this.files.length === 0) { - return this.emit("reset"); - } - }; - - Dropzone.prototype.removeAllFiles = function() { - var file, _i, _len, _ref; - - _ref = this.files.slice(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - if (__indexOf.call(this.filesProcessing, file) < 0) { - this.removeFile(file); - } - } - return null; - }; - - Dropzone.prototype.createThumbnail = function(file) { - var fileReader, - _this = this; - - fileReader = new FileReader; - fileReader.onload = function() { - var img; - - img = new Image; - img.onload = function() { - var canvas, ctx, srcHeight, srcRatio, srcWidth, srcX, srcY, thumbnail, trgHeight, trgRatio, trgWidth, trgX, trgY; - - canvas = document.createElement("canvas"); - ctx = canvas.getContext("2d"); - srcX = 0; - srcY = 0; - srcWidth = img.width; - srcHeight = img.height; - canvas.width = _this.options.thumbnailWidth; - canvas.height = _this.options.thumbnailHeight; - trgX = 0; - trgY = 0; - trgWidth = canvas.width; - trgHeight = canvas.height; - srcRatio = img.width / img.height; - trgRatio = canvas.width / canvas.height; - if (img.height < canvas.height || img.width < canvas.width) { - trgHeight = srcHeight; - trgWidth = srcWidth; - } else { - if (srcRatio > trgRatio) { - srcHeight = img.height; - srcWidth = srcHeight * trgRatio; - } else { - srcWidth = img.width; - srcHeight = srcWidth / trgRatio; - } - } - srcX = (img.width - srcWidth) / 2; - srcY = (img.height - srcHeight) / 2; - trgY = (canvas.height - trgHeight) / 2; - trgX = (canvas.width - trgWidth) / 2; - ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, trgX, trgY, trgWidth, trgHeight); - thumbnail = canvas.toDataURL("image/png"); - return _this.emit("thumbnail", file, thumbnail); - }; - return img.src = fileReader.result; - }; - return fileReader.readAsDataURL(file); - }; - - Dropzone.prototype.processQueue = function() { - var i, parallelUploads, processingLength; - - parallelUploads = this.options.parallelUploads; - processingLength = this.filesProcessing.length; - i = processingLength; - while (i < parallelUploads) { - if (!this.filesQueue.length) { - return; - } - this.processFile(this.filesQueue.shift()); - i++; - } - }; - - Dropzone.prototype.processFile = function(file) { - this.filesProcessing.push(file); - file.processing = true; - this.emit("processingfile", file); - return this.uploadFile(file); - }; - - Dropzone.prototype.uploadFile = function(file) { - var formData, handleError, input, inputName, inputType, key, progressObj, value, xhr, _i, _len, _ref, _ref1, _ref2, - _this = this; - - xhr = new XMLHttpRequest(); - xhr.open(this.options.method, this.options.url, true); - handleError = function() { - return _this.errorProcessing(file, xhr.responseText || ("Server responded with " + xhr.status + " code.")); - }; - xhr.onload = function(e) { - var response, _ref; - - if (!((200 <= (_ref = xhr.status) && _ref < 300))) { - return handleError(); - } else { - _this.emit("uploadprogress", file, 100); - response = xhr.responseText; - if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) { - response = JSON.parse(response); - } - return _this.finished(file, response, e); - } - }; - xhr.onerror = function() { - return handleError(); - }; - progressObj = (_ref = xhr.upload) != null ? _ref : xhr; - progressObj.onprogress = function(e) { - return _this.emit("uploadprogress", file, Math.max(0, Math.min(100, (e.loaded / e.total) * 100))); - }; - xhr.setRequestHeader("Accept", "application/json"); - xhr.setRequestHeader("Cache-Control", "no-cache"); - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - xhr.setRequestHeader("X-File-Name", file.name); - formData = new FormData(); - if (this.options.params) { - _ref1 = this.options.params; - for (key in _ref1) { - value = _ref1[key]; - formData.append(key, value); - } - } - if (this.element.tagName === "FORM") { - _ref2 = this.element.querySelectorAll("input, textarea, select, button"); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - input = _ref2[_i]; - inputName = input.getAttribute("name"); - inputType = input.getAttribute("type"); - if (!inputType || inputType.toLowerCase() !== "checkbox" || input.checked) { - formData.append(inputName, input.value); - } - } - } - this.emit("sending", file, xhr, formData); - formData.append(this.options.paramName, file); - return xhr.send(formData); - }; - - Dropzone.prototype.finished = function(file, responseText, e) { - this.filesProcessing = without(this.filesProcessing, file); - file.processing = false; - this.processQueue(); - this.emit("success", file, responseText, e); - this.emit("finished", file, responseText, e); - return this.emit("complete", file); - }; - - Dropzone.prototype.errorProcessing = function(file, message) { - this.filesProcessing = without(this.filesProcessing, file); - file.processing = false; - this.processQueue(); - this.emit("error", file, message); - return this.emit("complete", file); - }; - - return Dropzone; - - })(Em); - - Dropzone.version = "2.0.10"; - - Dropzone.options = {}; - - Dropzone.instances = []; - - Dropzone.forElement = function(element) { - var instance, _i, _len, _ref; - - if (typeof element === "string") { - element = document.querySelector(element); - } - _ref = Dropzone.instances; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - instance = _ref[_i]; - if (instance.element === element) { - return instance; - } - } - return null; - }; - - Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i]; - - Dropzone.isBrowserSupported = function() { - var capableBrowser, regex, _i, _len, _ref; - - capableBrowser = true; - if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) { - if (!("classList" in document.createElement("a"))) { - capableBrowser = false; - } else { - _ref = Dropzone.blacklistedBrowsers; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - regex = _ref[_i]; - if (regex.test(navigator.userAgent)) { - capableBrowser = false; - continue; - } - } - } - } else { - capableBrowser = false; - } - return capableBrowser; - }; - - without = function(list, rejectedItem) { - var item, _i, _len, _results; - - _results = []; - for (_i = 0, _len = list.length; _i < _len; _i++) { - item = list[_i]; - if (item !== rejectedItem) { - _results.push(item); - } - } - return _results; - }; - - camelize = function(str) { - return str.replace(/[\-_](\w)/g, function(match) { - return match[1].toUpperCase(); - }); - }; - - createElement = function(string) { - var div; - - div = document.createElement("div"); - div.innerHTML = string; - return div.childNodes[0]; - }; - - if (typeof jQuery !== "undefined" && jQuery !== null) { - jQuery.fn.dropzone = function(options) { - return this.each(function() { - return new Dropzone(this, options); - }); - }; - } - - if (typeof module !== "undefined" && module !== null) { - module.exports = Dropzone; - } else { - window.Dropzone = Dropzone; - } - - contentLoaded = function(win, fn) { - var add, doc, done, init, poll, pre, rem, root, top; - - done = false; - top = true; - doc = win.document; - root = doc.documentElement; - add = (doc.addEventListener ? "addEventListener" : "attachEvent"); - rem = (doc.addEventListener ? "removeEventListener" : "detachEvent"); - pre = (doc.addEventListener ? "" : "on"); - init = function(e) { - if (e.type === "readystatechange" && doc.readyState !== "complete") { - return; - } - (e.type === "load" ? win : doc)[rem](pre + e.type, init, false); - if (!done && (done = true)) { - return fn.call(win, e.type || e); - } - }; - poll = function() { - var e; - - try { - root.doScroll("left"); - } catch (_error) { - e = _error; - setTimeout(poll, 50); - return; - } - return init("poll"); - }; - if (doc.readyState !== "complete") { - if (doc.createEventObject && root.doScroll) { - try { - top = !win.frameElement; - } catch (_error) {} - if (top) { - poll(); - } - } - doc[add](pre + "DOMContentLoaded", init, false); - doc[add](pre + "readystatechange", init, false); - return win[add](pre + "load", init, false); - } - }; - - contentLoaded(window, function() { - var checkElements, dropzone, dropzones, _i, _len, _results; - - if (false) { - dropzones = document.querySelectorAll(".dropzone"); - } else { - dropzones = []; - checkElements = function(elements) { - var el, _i, _len, _results; - - _results = []; - for (_i = 0, _len = elements.length; _i < _len; _i++) { - el = elements[_i]; - if (/(^| )dropzone($| )/.test(el.className)) { - _results.push(dropzones.push(el)); - } else { - _results.push(void 0); - } - } - return _results; - }; - checkElements(document.getElementsByTagName("div")); - checkElements(document.getElementsByTagName("form")); - } - _results = []; - for (_i = 0, _len = dropzones.length; _i < _len; _i++) { - dropzone = dropzones[_i]; - _results.push(new Dropzone(dropzone)); - } - return _results; - }); - -}).call(this); - -}); -require.alias("component-emitter/index.js", "dropzone/deps/emitter/index.js"); - -if (typeof exports == "object") { - module.exports = require("dropzone"); -} else if (typeof define == "function" && define.amd) { - define(function(){ return require("dropzone"); }); -} else { - window["Dropzone"] = require("dropzone"); -}})(); \ No newline at end of file diff --git a/source/javascripts/html5-qrcode.js b/source/javascripts/html5-qrcode.js deleted file mode 100644 index 43ffa7b..0000000 --- a/source/javascripts/html5-qrcode.js +++ /dev/null @@ -1,64 +0,0 @@ -//--------------------------------------------------------------------- -// JavaScript-HTML5 QRCode Generator -// -// Copyright (c) 2011 Amanuel Tewolde -// -// Licensed under the MIT license: -// http://www.opensource.org/licenses/mit-license.php -// -//--------------------------------------------------------------------- - -// Generates a QRCode of text provided. -// First QRCode is rendered to a canvas. -// The canvas is then turned to an image PNG -// before being returned as an tag. -function showQRCode(text) { - - - var dotsize = 5; // size of box drawn on canvas - var padding = 10; // (white area around your QRCode) - var black = "rgb(0,0,0)"; - var white = "rgb(255,255,255)"; - var QRCodeVersion = 15; // 1-40 see http://www.denso-wave.com/qrcode/qrgene2-e.html - - var canvas=document.createElement('canvas'); - var qrCanvasContext = canvas.getContext('2d'); - try { - // QR Code Error Correction Capability - // Higher levels improves error correction capability while decreasing the amount of data QR Code size. - // QRErrorCorrectLevel.L (5%) QRErrorCorrectLevel.M (15%) QRErrorCorrectLevel.Q (25%) QRErrorCorrectLevel.H (30%) - // eg. L can survive approx 5% damage...etc. - var qr = new QRCode(QRCodeVersion, QRErrorCorrectLevel.L); - qr.addData(text); - qr.make(); - } - catch(err) { - var errorChild = document.createElement("p"); - var errorMSG = document.createTextNode("QR Code FAIL! " + err); - errorChild.appendChild(errorMSG); - return errorChild; - } - - var qrsize = qr.getModuleCount(); - canvas.setAttribute('height',(qrsize * dotsize) + padding); - canvas.setAttribute('width',(qrsize * dotsize) + padding); - var shiftForPadding = padding/2; - if (canvas.getContext){ - for (var r = 0; r < qrsize; r++) { - for (var c = 0; c < qrsize; c++) { - if (qr.isDark(r, c)) - qrCanvasContext.fillStyle = black; - else - qrCanvasContext.fillStyle = white; - qrCanvasContext.fillRect ((c*dotsize) +shiftForPadding,(r*dotsize) + shiftForPadding,dotsize,dotsize); // x, y, w, h - } - } - } - - var imgElement = document.createElement("img"); - imgElement.src = canvas.toDataURL("image/png"); - - return imgElement; - -} - diff --git a/source/javascripts/modernizr.custom.54013.js b/source/javascripts/modernizr.custom.54013.js deleted file mode 100644 index 87c1b0d..0000000 --- a/source/javascripts/modernizr.custom.54013.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.6.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes-load - */ -;window.Modernizr=function(a,b,c){function A(a){j.cssText=a}function B(a,b){return A(n.join(a+";")+(b||""))}function C(a,b){return typeof a===b}function D(a,b){return!!~(""+a).indexOf(b)}function E(a,b){for(var d in a){var e=a[d];if(!D(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function F(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:C(f,"function")?f.bind(d||b):f}return!1}function G(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return C(b,"string")||C(b,"undefined")?E(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),F(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={},s={},t={},u=[],v=u.slice,w,x=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},y={}.hasOwnProperty,z;!C(y,"undefined")&&!C(y.call,"undefined")?z=function(a,b){return y.call(a,b)}:z=function(a,b){return b in a&&C(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=v.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(v.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(v.call(arguments)))};return e}),r.flexbox=function(){return G("flexWrap")},r.rgba=function(){return A("background-color:rgba(150,255,150,.5)"),D(j.backgroundColor,"rgba")},r.hsla=function(){return A("background-color:hsla(120,40%,100%,.5)"),D(j.backgroundColor,"rgba")||D(j.backgroundColor,"hsla")},r.multiplebgs=function(){return A("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},r.backgroundsize=function(){return G("backgroundSize")},r.borderimage=function(){return G("borderImage")},r.borderradius=function(){return G("borderRadius")},r.boxshadow=function(){return G("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){return B("opacity:.55"),/^0.55$/.test(j.opacity)},r.cssanimations=function(){return G("animationName")},r.csscolumns=function(){return G("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return A((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),D(j.backgroundImage,"gradient")},r.cssreflections=function(){return G("boxReflect")},r.csstransforms=function(){return!!G("transform")},r.csstransforms3d=function(){var a=!!G("perspective");return a&&"webkitPerspective"in g.style&&x("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},r.csstransitions=function(){return G("transition")},r.fontface=function(){var a;return x('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},r.generatedcontent=function(){var a;return x(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a};for(var H in r)z(r,H)&&(w=H.toLowerCase(),e[w]=r[H](),u.push((e[w]?"":"no-")+w));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)z(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},A(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.testProp=function(a){return E([a])},e.testAllProps=G,e.testStyles=x,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+u.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f= 7) { - this.setupTypeNumber(test); - } - - if (this.dataCache == null) { - this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList); - } - - this.mapData(this.dataCache, maskPattern); - }, - - setupPositionProbePattern : function(row, col) { - - for (var r = -1; r <= 7; r++) { - - if (row + r <= -1 || this.moduleCount <= row + r) continue; - - for (var c = -1; c <= 7; c++) { - - if (col + c <= -1 || this.moduleCount <= col + c) continue; - - if ( (0 <= r && r <= 6 && (c == 0 || c == 6) ) - || (0 <= c && c <= 6 && (r == 0 || r == 6) ) - || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) { - this.modules[row + r][col + c] = true; - } else { - this.modules[row + r][col + c] = false; - } - } - } - }, - - getBestMaskPattern : function() { - - var minLostPoint = 0; - var pattern = 0; - - for (var i = 0; i < 8; i++) { - - this.makeImpl(true, i); - - var lostPoint = QRUtil.getLostPoint(this); - - if (i == 0 || minLostPoint > lostPoint) { - minLostPoint = lostPoint; - pattern = i; - } - } - - return pattern; - }, - - createMovieClip : function(target_mc, instance_name, depth) { - - var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth); - var cs = 1; - - this.make(); - - for (var row = 0; row < this.modules.length; row++) { - - var y = row * cs; - - for (var col = 0; col < this.modules[row].length; col++) { - - var x = col * cs; - var dark = this.modules[row][col]; - - if (dark) { - qr_mc.beginFill(0, 100); - qr_mc.moveTo(x, y); - qr_mc.lineTo(x + cs, y); - qr_mc.lineTo(x + cs, y + cs); - qr_mc.lineTo(x, y + cs); - qr_mc.endFill(); - } - } - } - - return qr_mc; - }, - - setupTimingPattern : function() { - - for (var r = 8; r < this.moduleCount - 8; r++) { - if (this.modules[r][6] != null) { - continue; - } - this.modules[r][6] = (r % 2 == 0); - } - - for (var c = 8; c < this.moduleCount - 8; c++) { - if (this.modules[6][c] != null) { - continue; - } - this.modules[6][c] = (c % 2 == 0); - } - }, - - setupPositionAdjustPattern : function() { - - var pos = QRUtil.getPatternPosition(this.typeNumber); - - for (var i = 0; i < pos.length; i++) { - - for (var j = 0; j < pos.length; j++) { - - var row = pos[i]; - var col = pos[j]; - - if (this.modules[row][col] != null) { - continue; - } - - for (var r = -2; r <= 2; r++) { - - for (var c = -2; c <= 2; c++) { - - if (r == -2 || r == 2 || c == -2 || c == 2 - || (r == 0 && c == 0) ) { - this.modules[row + r][col + c] = true; - } else { - this.modules[row + r][col + c] = false; - } - } - } - } - } - }, - - setupTypeNumber : function(test) { - - var bits = QRUtil.getBCHTypeNumber(this.typeNumber); - - for (var i = 0; i < 18; i++) { - var mod = (!test && ( (bits >> i) & 1) == 1); - this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod; - } - - for (var i = 0; i < 18; i++) { - var mod = (!test && ( (bits >> i) & 1) == 1); - this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod; - } - }, - - setupTypeInfo : function(test, maskPattern) { - - var data = (this.errorCorrectLevel << 3) | maskPattern; - var bits = QRUtil.getBCHTypeInfo(data); - - // vertical - for (var i = 0; i < 15; i++) { - - var mod = (!test && ( (bits >> i) & 1) == 1); - - if (i < 6) { - this.modules[i][8] = mod; - } else if (i < 8) { - this.modules[i + 1][8] = mod; - } else { - this.modules[this.moduleCount - 15 + i][8] = mod; - } - } - - // horizontal - for (var i = 0; i < 15; i++) { - - var mod = (!test && ( (bits >> i) & 1) == 1); - - if (i < 8) { - this.modules[8][this.moduleCount - i - 1] = mod; - } else if (i < 9) { - this.modules[8][15 - i - 1 + 1] = mod; - } else { - this.modules[8][15 - i - 1] = mod; - } - } - - // fixed module - this.modules[this.moduleCount - 8][8] = (!test); - - }, - - mapData : function(data, maskPattern) { - - var inc = -1; - var row = this.moduleCount - 1; - var bitIndex = 7; - var byteIndex = 0; - - for (var col = this.moduleCount - 1; col > 0; col -= 2) { - - if (col == 6) col--; - - while (true) { - - for (var c = 0; c < 2; c++) { - - if (this.modules[row][col - c] == null) { - - var dark = false; - - if (byteIndex < data.length) { - dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1); - } - - var mask = QRUtil.getMask(maskPattern, row, col - c); - - if (mask) { - dark = !dark; - } - - this.modules[row][col - c] = dark; - bitIndex--; - - if (bitIndex == -1) { - byteIndex++; - bitIndex = 7; - } - } - } - - row += inc; - - if (row < 0 || this.moduleCount <= row) { - row -= inc; - inc = -inc; - break; - } - } - } - - } - -}; - -QRCode.PAD0 = 0xEC; -QRCode.PAD1 = 0x11; - -QRCode.createData = function(typeNumber, errorCorrectLevel, dataList) { - - var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); - - var buffer = new QRBitBuffer(); - - for (var i = 0; i < dataList.length; i++) { - var data = dataList[i]; - buffer.put(data.mode, 4); - buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber) ); - data.write(buffer); - } - - // calc num max data. - var totalDataCount = 0; - for (var i = 0; i < rsBlocks.length; i++) { - totalDataCount += rsBlocks[i].dataCount; - } - - if (buffer.getLengthInBits() > totalDataCount * 8) { - throw new Error("code length overflow. (" - + buffer.getLengthInBits() - + ">" - + totalDataCount * 8 - + ")"); - } - - // end code - if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { - buffer.put(0, 4); - } - - // padding - while (buffer.getLengthInBits() % 8 != 0) { - buffer.putBit(false); - } - - // padding - while (true) { - - if (buffer.getLengthInBits() >= totalDataCount * 8) { - break; - } - buffer.put(QRCode.PAD0, 8); - - if (buffer.getLengthInBits() >= totalDataCount * 8) { - break; - } - buffer.put(QRCode.PAD1, 8); - } - - return QRCode.createBytes(buffer, rsBlocks); -} - -QRCode.createBytes = function(buffer, rsBlocks) { - - var offset = 0; - - var maxDcCount = 0; - var maxEcCount = 0; - - var dcdata = new Array(rsBlocks.length); - var ecdata = new Array(rsBlocks.length); - - for (var r = 0; r < rsBlocks.length; r++) { - - var dcCount = rsBlocks[r].dataCount; - var ecCount = rsBlocks[r].totalCount - dcCount; - - maxDcCount = Math.max(maxDcCount, dcCount); - maxEcCount = Math.max(maxEcCount, ecCount); - - dcdata[r] = new Array(dcCount); - - for (var i = 0; i < dcdata[r].length; i++) { - dcdata[r][i] = 0xff & buffer.buffer[i + offset]; - } - offset += dcCount; - - var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); - var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1); - - var modPoly = rawPoly.mod(rsPoly); - ecdata[r] = new Array(rsPoly.getLength() - 1); - for (var i = 0; i < ecdata[r].length; i++) { - var modIndex = i + modPoly.getLength() - ecdata[r].length; - ecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0; - } - - } - - var totalCodeCount = 0; - for (var i = 0; i < rsBlocks.length; i++) { - totalCodeCount += rsBlocks[i].totalCount; - } - - var data = new Array(totalCodeCount); - var index = 0; - - for (var i = 0; i < maxDcCount; i++) { - for (var r = 0; r < rsBlocks.length; r++) { - if (i < dcdata[r].length) { - data[index++] = dcdata[r][i]; - } - } - } - - for (var i = 0; i < maxEcCount; i++) { - for (var r = 0; r < rsBlocks.length; r++) { - if (i < ecdata[r].length) { - data[index++] = ecdata[r][i]; - } - } - } - - return data; - -} - -//--------------------------------------------------------------------- -// QRMode -//--------------------------------------------------------------------- - -var QRMode = { - MODE_NUMBER : 1 << 0, - MODE_ALPHA_NUM : 1 << 1, - MODE_8BIT_BYTE : 1 << 2, - MODE_KANJI : 1 << 3 -}; - -//--------------------------------------------------------------------- -// QRErrorCorrectLevel -//--------------------------------------------------------------------- - -var QRErrorCorrectLevel = { - L : 1, - M : 0, - Q : 3, - H : 2 -}; - -//--------------------------------------------------------------------- -// QRMaskPattern -//--------------------------------------------------------------------- - -var QRMaskPattern = { - PATTERN000 : 0, - PATTERN001 : 1, - PATTERN010 : 2, - PATTERN011 : 3, - PATTERN100 : 4, - PATTERN101 : 5, - PATTERN110 : 6, - PATTERN111 : 7 -}; - -//--------------------------------------------------------------------- -// QRUtil -//--------------------------------------------------------------------- - -var QRUtil = { - - PATTERN_POSITION_TABLE : [ - [], - [6, 18], - [6, 22], - [6, 26], - [6, 30], - [6, 34], - [6, 22, 38], - [6, 24, 42], - [6, 26, 46], - [6, 28, 50], - [6, 30, 54], - [6, 32, 58], - [6, 34, 62], - [6, 26, 46, 66], - [6, 26, 48, 70], - [6, 26, 50, 74], - [6, 30, 54, 78], - [6, 30, 56, 82], - [6, 30, 58, 86], - [6, 34, 62, 90], - [6, 28, 50, 72, 94], - [6, 26, 50, 74, 98], - [6, 30, 54, 78, 102], - [6, 28, 54, 80, 106], - [6, 32, 58, 84, 110], - [6, 30, 58, 86, 114], - [6, 34, 62, 90, 118], - [6, 26, 50, 74, 98, 122], - [6, 30, 54, 78, 102, 126], - [6, 26, 52, 78, 104, 130], - [6, 30, 56, 82, 108, 134], - [6, 34, 60, 86, 112, 138], - [6, 30, 58, 86, 114, 142], - [6, 34, 62, 90, 118, 146], - [6, 30, 54, 78, 102, 126, 150], - [6, 24, 50, 76, 102, 128, 154], - [6, 28, 54, 80, 106, 132, 158], - [6, 32, 58, 84, 110, 136, 162], - [6, 26, 54, 82, 110, 138, 166], - [6, 30, 58, 86, 114, 142, 170] - ], - - G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0), - G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0), - G15_MASK : (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1), - - getBCHTypeInfo : function(data) { - var d = data << 10; - while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) { - d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); - } - return ( (data << 10) | d) ^ QRUtil.G15_MASK; - }, - - getBCHTypeNumber : function(data) { - var d = data << 12; - while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) { - d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); - } - return (data << 12) | d; - }, - - getBCHDigit : function(data) { - - var digit = 0; - - while (data != 0) { - digit++; - data >>>= 1; - } - - return digit; - }, - - getPatternPosition : function(typeNumber) { - return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]; - }, - - getMask : function(maskPattern, i, j) { - - switch (maskPattern) { - - case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0; - case QRMaskPattern.PATTERN001 : return i % 2 == 0; - case QRMaskPattern.PATTERN010 : return j % 3 == 0; - case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0; - case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; - case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0; - case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; - case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; - - default : - throw new Error("bad maskPattern:" + maskPattern); - } - }, - - getErrorCorrectPolynomial : function(errorCorrectLength) { - - var a = new QRPolynomial([1], 0); - - for (var i = 0; i < errorCorrectLength; i++) { - a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0) ); - } - - return a; - }, - - getLengthInBits : function(mode, type) { - - if (1 <= type && type < 10) { - - // 1 - 9 - - switch(mode) { - case QRMode.MODE_NUMBER : return 10; - case QRMode.MODE_ALPHA_NUM : return 9; - case QRMode.MODE_8BIT_BYTE : return 8; - case QRMode.MODE_KANJI : return 8; - default : - throw new Error("mode:" + mode); - } - - } else if (type < 27) { - - // 10 - 26 - - switch(mode) { - case QRMode.MODE_NUMBER : return 12; - case QRMode.MODE_ALPHA_NUM : return 11; - case QRMode.MODE_8BIT_BYTE : return 16; - case QRMode.MODE_KANJI : return 10; - default : - throw new Error("mode:" + mode); - } - - } else if (type < 41) { - - // 27 - 40 - - switch(mode) { - case QRMode.MODE_NUMBER : return 14; - case QRMode.MODE_ALPHA_NUM : return 13; - case QRMode.MODE_8BIT_BYTE : return 16; - case QRMode.MODE_KANJI : return 12; - default : - throw new Error("mode:" + mode); - } - - } else { - throw new Error("type:" + type); - } - }, - - getLostPoint : function(qrCode) { - - var moduleCount = qrCode.getModuleCount(); - - var lostPoint = 0; - - // LEVEL1 - - for (var row = 0; row < moduleCount; row++) { - - for (var col = 0; col < moduleCount; col++) { - - var sameCount = 0; - var dark = qrCode.isDark(row, col); - - for (var r = -1; r <= 1; r++) { - - if (row + r < 0 || moduleCount <= row + r) { - continue; - } - - for (var c = -1; c <= 1; c++) { - - if (col + c < 0 || moduleCount <= col + c) { - continue; - } - - if (r == 0 && c == 0) { - continue; - } - - if (dark == qrCode.isDark(row + r, col + c) ) { - sameCount++; - } - } - } - - if (sameCount > 5) { - lostPoint += (3 + sameCount - 5); - } - } - } - - // LEVEL2 - - for (var row = 0; row < moduleCount - 1; row++) { - for (var col = 0; col < moduleCount - 1; col++) { - var count = 0; - if (qrCode.isDark(row, col ) ) count++; - if (qrCode.isDark(row + 1, col ) ) count++; - if (qrCode.isDark(row, col + 1) ) count++; - if (qrCode.isDark(row + 1, col + 1) ) count++; - if (count == 0 || count == 4) { - lostPoint += 3; - } - } - } - - // LEVEL3 - - for (var row = 0; row < moduleCount; row++) { - for (var col = 0; col < moduleCount - 6; col++) { - if (qrCode.isDark(row, col) - && !qrCode.isDark(row, col + 1) - && qrCode.isDark(row, col + 2) - && qrCode.isDark(row, col + 3) - && qrCode.isDark(row, col + 4) - && !qrCode.isDark(row, col + 5) - && qrCode.isDark(row, col + 6) ) { - lostPoint += 40; - } - } - } - - for (var col = 0; col < moduleCount; col++) { - for (var row = 0; row < moduleCount - 6; row++) { - if (qrCode.isDark(row, col) - && !qrCode.isDark(row + 1, col) - && qrCode.isDark(row + 2, col) - && qrCode.isDark(row + 3, col) - && qrCode.isDark(row + 4, col) - && !qrCode.isDark(row + 5, col) - && qrCode.isDark(row + 6, col) ) { - lostPoint += 40; - } - } - } - - // LEVEL4 - - var darkCount = 0; - - for (var col = 0; col < moduleCount; col++) { - for (var row = 0; row < moduleCount; row++) { - if (qrCode.isDark(row, col) ) { - darkCount++; - } - } - } - - var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; - lostPoint += ratio * 10; - - return lostPoint; - } - -}; - - -//--------------------------------------------------------------------- -// QRMath -//--------------------------------------------------------------------- - -var QRMath = { - - glog : function(n) { - - if (n < 1) { - throw new Error("glog(" + n + ")"); - } - - return QRMath.LOG_TABLE[n]; - }, - - gexp : function(n) { - - while (n < 0) { - n += 255; - } - - while (n >= 256) { - n -= 255; - } - - return QRMath.EXP_TABLE[n]; - }, - - EXP_TABLE : new Array(256), - - LOG_TABLE : new Array(256) - -}; - -for (var i = 0; i < 8; i++) { - QRMath.EXP_TABLE[i] = 1 << i; -} -for (var i = 8; i < 256; i++) { - QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] - ^ QRMath.EXP_TABLE[i - 5] - ^ QRMath.EXP_TABLE[i - 6] - ^ QRMath.EXP_TABLE[i - 8]; -} -for (var i = 0; i < 255; i++) { - QRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i; -} - -//--------------------------------------------------------------------- -// QRPolynomial -//--------------------------------------------------------------------- - -function QRPolynomial(num, shift) { - - if (num.length == undefined) { - throw new Error(num.length + "/" + shift); - } - - var offset = 0; - - while (offset < num.length && num[offset] == 0) { - offset++; - } - - this.num = new Array(num.length - offset + shift); - for (var i = 0; i < num.length - offset; i++) { - this.num[i] = num[i + offset]; - } -} - -QRPolynomial.prototype = { - - get : function(index) { - return this.num[index]; - }, - - getLength : function() { - return this.num.length; - }, - - multiply : function(e) { - - var num = new Array(this.getLength() + e.getLength() - 1); - - for (var i = 0; i < this.getLength(); i++) { - for (var j = 0; j < e.getLength(); j++) { - num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i) ) + QRMath.glog(e.get(j) ) ); - } - } - - return new QRPolynomial(num, 0); - }, - - mod : function(e) { - - if (this.getLength() - e.getLength() < 0) { - return this; - } - - var ratio = QRMath.glog(this.get(0) ) - QRMath.glog(e.get(0) ); - - var num = new Array(this.getLength() ); - - for (var i = 0; i < this.getLength(); i++) { - num[i] = this.get(i); - } - - for (var i = 0; i < e.getLength(); i++) { - num[i] ^= QRMath.gexp(QRMath.glog(e.get(i) ) + ratio); - } - - // recursive call - return new QRPolynomial(num, 0).mod(e); - } -}; - -//--------------------------------------------------------------------- -// QRRSBlock -//--------------------------------------------------------------------- - -function QRRSBlock(totalCount, dataCount) { - this.totalCount = totalCount; - this.dataCount = dataCount; -} - -QRRSBlock.RS_BLOCK_TABLE = [ - - // L - // M - // Q - // H - - // 1 - [1, 26, 19], - [1, 26, 16], - [1, 26, 13], - [1, 26, 9], - - // 2 - [1, 44, 34], - [1, 44, 28], - [1, 44, 22], - [1, 44, 16], - - // 3 - [1, 70, 55], - [1, 70, 44], - [2, 35, 17], - [2, 35, 13], - - // 4 - [1, 100, 80], - [2, 50, 32], - [2, 50, 24], - [4, 25, 9], - - // 5 - [1, 134, 108], - [2, 67, 43], - [2, 33, 15, 2, 34, 16], - [2, 33, 11, 2, 34, 12], - - // 6 - [2, 86, 68], - [4, 43, 27], - [4, 43, 19], - [4, 43, 15], - - // 7 - [2, 98, 78], - [4, 49, 31], - [2, 32, 14, 4, 33, 15], - [4, 39, 13, 1, 40, 14], - - // 8 - [2, 121, 97], - [2, 60, 38, 2, 61, 39], - [4, 40, 18, 2, 41, 19], - [4, 40, 14, 2, 41, 15], - - // 9 - [2, 146, 116], - [3, 58, 36, 2, 59, 37], - [4, 36, 16, 4, 37, 17], - [4, 36, 12, 4, 37, 13], - - // 10 - [2, 86, 68, 2, 87, 69], - [4, 69, 43, 1, 70, 44], - [6, 43, 19, 2, 44, 20], - [6, 43, 15, 2, 44, 16], - - // 11 - [4, 101, 81], - [1, 80, 50, 4, 81, 51], - [4, 50, 22, 4, 51, 23], - [3, 36, 12, 8, 37, 13], - - // 12 - [2, 116, 92, 2, 117, 93], - [6, 58, 36, 2, 59, 37], - [4, 46, 20, 6, 47, 21], - [7, 42, 14, 4, 43, 15], - - // 13 - [4, 133, 107], - [8, 59, 37, 1, 60, 38], - [8, 44, 20, 4, 45, 21], - [12, 33, 11, 4, 34, 12], - - // 14 - [3, 145, 115, 1, 146, 116], - [4, 64, 40, 5, 65, 41], - [11, 36, 16, 5, 37, 17], - [11, 36, 12, 5, 37, 13], - - // 15 - [5, 109, 87, 1, 110, 88], - [5, 65, 41, 5, 66, 42], - [5, 54, 24, 7, 55, 25], - [11, 36, 12], - - // 16 - [5, 122, 98, 1, 123, 99], - [7, 73, 45, 3, 74, 46], - [15, 43, 19, 2, 44, 20], - [3, 45, 15, 13, 46, 16], - - // 17 - [1, 135, 107, 5, 136, 108], - [10, 74, 46, 1, 75, 47], - [1, 50, 22, 15, 51, 23], - [2, 42, 14, 17, 43, 15], - - // 18 - [5, 150, 120, 1, 151, 121], - [9, 69, 43, 4, 70, 44], - [17, 50, 22, 1, 51, 23], - [2, 42, 14, 19, 43, 15], - - // 19 - [3, 141, 113, 4, 142, 114], - [3, 70, 44, 11, 71, 45], - [17, 47, 21, 4, 48, 22], - [9, 39, 13, 16, 40, 14], - - // 20 - [3, 135, 107, 5, 136, 108], - [3, 67, 41, 13, 68, 42], - [15, 54, 24, 5, 55, 25], - [15, 43, 15, 10, 44, 16], - - // 21 - [4, 144, 116, 4, 145, 117], - [17, 68, 42], - [17, 50, 22, 6, 51, 23], - [19, 46, 16, 6, 47, 17], - - // 22 - [2, 139, 111, 7, 140, 112], - [17, 74, 46], - [7, 54, 24, 16, 55, 25], - [34, 37, 13], - - // 23 - [4, 151, 121, 5, 152, 122], - [4, 75, 47, 14, 76, 48], - [11, 54, 24, 14, 55, 25], - [16, 45, 15, 14, 46, 16], - - // 24 - [6, 147, 117, 4, 148, 118], - [6, 73, 45, 14, 74, 46], - [11, 54, 24, 16, 55, 25], - [30, 46, 16, 2, 47, 17], - - // 25 - [8, 132, 106, 4, 133, 107], - [8, 75, 47, 13, 76, 48], - [7, 54, 24, 22, 55, 25], - [22, 45, 15, 13, 46, 16], - - // 26 - [10, 142, 114, 2, 143, 115], - [19, 74, 46, 4, 75, 47], - [28, 50, 22, 6, 51, 23], - [33, 46, 16, 4, 47, 17], - - // 27 - [8, 152, 122, 4, 153, 123], - [22, 73, 45, 3, 74, 46], - [8, 53, 23, 26, 54, 24], - [12, 45, 15, 28, 46, 16], - - // 28 - [3, 147, 117, 10, 148, 118], - [3, 73, 45, 23, 74, 46], - [4, 54, 24, 31, 55, 25], - [11, 45, 15, 31, 46, 16], - - // 29 - [7, 146, 116, 7, 147, 117], - [21, 73, 45, 7, 74, 46], - [1, 53, 23, 37, 54, 24], - [19, 45, 15, 26, 46, 16], - - // 30 - [5, 145, 115, 10, 146, 116], - [19, 75, 47, 10, 76, 48], - [15, 54, 24, 25, 55, 25], - [23, 45, 15, 25, 46, 16], - - // 31 - [13, 145, 115, 3, 146, 116], - [2, 74, 46, 29, 75, 47], - [42, 54, 24, 1, 55, 25], - [23, 45, 15, 28, 46, 16], - - // 32 - [17, 145, 115], - [10, 74, 46, 23, 75, 47], - [10, 54, 24, 35, 55, 25], - [19, 45, 15, 35, 46, 16], - - // 33 - [17, 145, 115, 1, 146, 116], - [14, 74, 46, 21, 75, 47], - [29, 54, 24, 19, 55, 25], - [11, 45, 15, 46, 46, 16], - - // 34 - [13, 145, 115, 6, 146, 116], - [14, 74, 46, 23, 75, 47], - [44, 54, 24, 7, 55, 25], - [59, 46, 16, 1, 47, 17], - - // 35 - [12, 151, 121, 7, 152, 122], - [12, 75, 47, 26, 76, 48], - [39, 54, 24, 14, 55, 25], - [22, 45, 15, 41, 46, 16], - - // 36 - [6, 151, 121, 14, 152, 122], - [6, 75, 47, 34, 76, 48], - [46, 54, 24, 10, 55, 25], - [2, 45, 15, 64, 46, 16], - - // 37 - [17, 152, 122, 4, 153, 123], - [29, 74, 46, 14, 75, 47], - [49, 54, 24, 10, 55, 25], - [24, 45, 15, 46, 46, 16], - - // 38 - [4, 152, 122, 18, 153, 123], - [13, 74, 46, 32, 75, 47], - [48, 54, 24, 14, 55, 25], - [42, 45, 15, 32, 46, 16], - - // 39 - [20, 147, 117, 4, 148, 118], - [40, 75, 47, 7, 76, 48], - [43, 54, 24, 22, 55, 25], - [10, 45, 15, 67, 46, 16], - - // 40 - [19, 148, 118, 6, 149, 119], - [18, 75, 47, 31, 76, 48], - [34, 54, 24, 34, 55, 25], - [20, 45, 15, 61, 46, 16] - -]; - -QRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) { - - var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel); - - if (rsBlock == undefined) { - throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel); - } - - var length = rsBlock.length / 3; - - var list = new Array(); - - for (var i = 0; i < length; i++) { - - var count = rsBlock[i * 3 + 0]; - var totalCount = rsBlock[i * 3 + 1]; - var dataCount = rsBlock[i * 3 + 2]; - - for (var j = 0; j < count; j++) { - list.push(new QRRSBlock(totalCount, dataCount) ); - } - } - - return list; -} - -QRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) { - - switch(errorCorrectLevel) { - case QRErrorCorrectLevel.L : - return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; - case QRErrorCorrectLevel.M : - return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; - case QRErrorCorrectLevel.Q : - return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; - case QRErrorCorrectLevel.H : - return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; - default : - return undefined; - } -} - -//--------------------------------------------------------------------- -// QRBitBuffer -//--------------------------------------------------------------------- - -function QRBitBuffer() { - this.buffer = new Array(); - this.length = 0; -} - -QRBitBuffer.prototype = { - - get : function(index) { - var bufIndex = Math.floor(index / 8); - return ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1; - }, - - put : function(num, length) { - for (var i = 0; i < length; i++) { - this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1); - } - }, - - getLengthInBits : function() { - return this.length; - }, - - putBit : function(bit) { - - var bufIndex = Math.floor(this.length / 8); - if (this.buffer.length <= bufIndex) { - this.buffer.push(0); - } - - if (bit) { - this.buffer[bufIndex] |= (0x80 >>> (this.length % 8) ); - } - - this.length++; - } -}; diff --git a/source/keybase.txt b/source/keybase.txt deleted file mode 100644 index dbad9be..0000000 --- a/source/keybase.txt +++ /dev/null @@ -1,86 +0,0 @@ -================================================================== -https://keybase.io/mic92 --------------------------------------------------------------------- - -I hereby claim: - - * I am an admin of https://thalheim.io - * I am mic92 (https://keybase.io/mic92) on keybase. - * I have a public key with fingerprint 3DEE 1C55 6E1C 3DC5 54F5 875A 003F 2096 411B 5F92 - -To do so, I am signing this object: - -{ - "body": { - "key": { - "eldest_kid": "010168e960a47ca2bdd76bc6519349f9a5809dbff18f981cb6d1fb43f6db8a6a055c0a", - "fingerprint": "3dee1c556e1c3dc554f5875a003f2096411b5f92", - "host": "keybase.io", - "key_id": "003f2096411b5f92", - "kid": "010106aad5a9aaf0c5545554e800b83d5e1bd6a6697748714271c5dcb1995132ab420a", - "uid": "f9e2f6a48ba81016fb4b204ef3f1aa00", - "username": "mic92" - }, - "merkle_root": { - "ctime": 1548286116, - "hash_meta": "a431e6f653248f3fe4b24319002d2878e4dd1e7a495eca74ca17dc04fdc97acb", - "seqno": 4595760 - }, - "revoke": { - "sig_ids": [ - "f00fd732b1c6e3da83520e918d2719b07c76f1692ea4a79d0b691f346eb544df0f" - ] - }, - "service": { - "hostname": "thalheim.io", - "protocol": "https:" - }, - "type": "web_service_binding", - "version": 1 - }, - "ctime": 1548286118, - "expire_in": 157680000, - "prev": "454b19ef79177c612ef661003605ceefd084eeb16e79c73fce8edf931af3bdc9", - "seqno": 38, - "tag": "signature" -} - -which yields the signature: - ------BEGIN PGP MESSAGE----- - -owJ4nGVTbVAVVRgGBFFGUoO0gcl0AyYN8Zzds2d3L2NqZomWH2A/Uuh2ds85l5XL -vdd715uG5BdWfmQIKtRMBtNkotcRlXHKhgE/Ij8qLZpAyGz6oZP90TFHQZPOoo4z -9WN3z77neZ/3eZ/3nOrUIXEp8YdvdmeOsH0n48/+acYVz779fYVkBulKyVMhlbHB -D/NTFnG8ZTaVPBKAAGKdGRgQpFlENinVsGlhFRoKMrhBVB0Y1OQc6tzQoWViCrmJ -FI6pqRNMgKpagEi5ErcDPhYOhe2AI2gVyhi0VBWLt0LFAnFV11QCgMJlYGAEoaly -QxaJpcGImyHEmSTC8uygiIkf7315/8c/0g0wIVQlBiEcuCVU8TAdAFNXqMqgSTHB -2NA0pGsQyZrQQy0TGoYKFZmYSB7UvXyQjhtM5pgg3SS664ho0ZQBYlzhkAjVLjDC -wgFSzgS63LaElMpcqZyFy/zMGw4GHddZy7HdfagiXdYxhFh0RyKl3nLmEJFGkAIZ -5lhVZKQLZiZqiJABgExlXdMZohQyjSBDZRbRkEWgRi2AOLUMjVimEBFhywJByYNU -Q9UwEArCLBosY27xiO0TnkUkzxKJA8CpprRHZBNamCmU6IoqA2ZAnQofDBNoloY5 -xIbMCCKaQYGJDcgVhJmpIkQ54FJJpVsuHLWtQXp3TA/ad0qJv5TZ5fdnFQoHnaAV -9IuNUscJRTyuMc7KkIt8i5neBxxe0w5QcUZERpSFI3YwIIwSyP96pudKbEXIDjOv -7SJEm2KiALh1WFRQIhWJGTKuGVDTLAxlxjGG4pxgoFqMcQp0xJgJMdMMS1O4xXRG -uaFAwhVTGPnIREWUcohPcArrAsRZHmZSZcrGBCUxLj4l7qkxExLJj0kHc/emZzoL -f1/88F4lJbiXKi5l+KiHkdohIweKazYvPL3ntQ5yvak+MnHGt9duP77KP+23wPkn -U0eivJN3t824cGNWBhr7z4mjDad7kxtSN/em93RMURYt2v3euUCGdbWtFTVu1zLm -HLp15u6W0+0NSR+u27fjdp/Tfu+5HX+v6cjL2fBZRbkvVrWpcUvd4vG12U3vzxoe -4++W4sL+td3n04qXzl89dGJza04aeHFAVtIS8qIFodxsnHCrK1TUemQnG3fsQuy4 -p6Q2P/Ni26i9DdKwHxxPZ8uYl0cd6i98+gN7aO+p5FvrqyZ9uvhe7dxYQ93om5Of -Ode4tiep+olN3/QPW5UdP7zIll9asHbE2KvqV9dXb5059Zc1XbPzNlaeTFwwuYvN -/Hzdr00lY+c0VfRmTGnDZ07t+fmPniM0eecr04oSrqVebs39Qi32P/8GKZwOXlh/ -ZcLo1urmzJYs40DJ3uuXtqY+NgJnJZ5I3LjjWObWZ/tC9Qvm9/na+jsv5/tzvot+ -dOSSsb1mRsP0zqI5s81XIwn545yz82LtqRl3Pt5Vltyzb8hA3TY6880V2pr0JO2T -w7Wd4w/eWXG8ZH/F6i/V13enbz56JUaWzO3oiTXmX8q6kXkmflfWBHlSy/iU/vpl -zX193YV17+zP+WtXRRrunhWt6+x6u2V389T1U8yfDrbLBeRU95LtSwcuxm/gBXc6 -C+YFfAeShlkFVVlVvsSa7DhSv7Bt59yv/wUcqP+k -=qHe2 ------END PGP MESSAGE----- - -And finally, I am proving ownership of this host by posting or -appending to this document. - -View my publicly-auditable identity here: https://keybase.io/mic92 - -================================================================== diff --git a/source/ping.txt b/source/ping.txt deleted file mode 100644 index 8e55469..0000000 --- a/source/ping.txt +++ /dev/null @@ -1 +0,0 @@ -pong diff --git a/source/stylesheets/dropzone.css b/source/stylesheets/dropzone.css deleted file mode 100644 index 1faa772..0000000 --- a/source/stylesheets/dropzone.css +++ /dev/null @@ -1,394 +0,0 @@ -/* The MIT License */ -.dropzone, -.dropzone *, -.dropzone-previews, -.dropzone-previews * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.dropzone { - position: relative; - border: 1px solid rgba(0,0,0,0.08); - background: rgba(0,0,0,0.02); - padding: 1em; -} -.dropzone.clickable { - cursor: pointer; -} -.dropzone.clickable .message { - cursor: pointer; -} -.dropzone.clickable * { - cursor: default; -} -.dropzone .message { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone.drag-hover { - border-color: rgba(0,0,0,0.15); - background: rgba(0,0,0,0.04); -} -.dropzone.started .message { - display: none; -} -.dropzone .preview, -.dropzone-previews .preview { - background: rgba(255,255,255,0.8); - position: relative; - display: inline-block; - margin: 17px; - vertical-align: top; - border: 1px solid #acacac; - padding: 6px 6px 6px 6px; -} -.dropzone .preview .details, -.dropzone-previews .preview .details { - width: 100px; - height: 100px; - position: relative; - background: #ebebeb; - padding: 5px; - margin-bottom: 22px; -} -.dropzone .preview .details .filename, -.dropzone-previews .preview .details .filename { - overflow: hidden; - height: 100%; -} -.dropzone .preview .details img, -.dropzone-previews .preview .details img { - position: absolute; - top: 0; - left: 0; - width: 100px; - height: 100px; -} -.dropzone .preview .details .size, -.dropzone-previews .preview .details .size { - position: absolute; - bottom: -28px; - left: 3px; - height: 28px; - line-height: 28px; -} -.dropzone .preview.error .error-mark, -.dropzone-previews .preview.error .error-mark { - display: block; -} -.dropzone .preview.success .success-mark, -.dropzone-previews .preview.success .success-mark { - display: block; -} -.dropzone .preview:hover .details img, -.dropzone-previews .preview:hover .details img { - display: none; -} -.dropzone .preview:hover .success-mark, -.dropzone-previews .preview:hover .success-mark, -.dropzone .preview:hover .error-mark, -.dropzone-previews .preview:hover .error-mark { - display: none; -} -.dropzone .preview .success-mark, -.dropzone-previews .preview .success-mark, -.dropzone .preview .error-mark, -.dropzone-previews .preview .error-mark { - display: none; - position: absolute; - width: 40px; - height: 40px; - font-size: 30px; - text-align: center; - right: -10px; - top: -10px; -} -.dropzone .preview .success-mark, -.dropzone-previews .preview .success-mark { - color: #8cc657; -} -.dropzone .preview .error-mark, -.dropzone-previews .preview .error-mark { - color: #ee162d; -} -.dropzone .preview .progress, -.dropzone-previews .preview .progress { - position: absolute; - top: 100px; - left: 6px; - right: 6px; - height: 6px; - background: #d7d7d7; - display: none; -} -.dropzone .preview .progress .upload, -.dropzone-previews .preview .progress .upload { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 0%; - background-color: #8cc657; -} -.dropzone .preview.processing .progress, -.dropzone-previews .preview.processing .progress { - display: block; -} -.dropzone .preview .error-message, -.dropzone-previews .preview .error-message { - display: none; - position: absolute; - top: -5px; - left: -20px; - background: rgba(245,245,245,0.8); - padding: 8px 10px; - color: #800; - min-width: 140px; - max-width: 500px; - z-index: 500; -} -.dropzone .preview:hover.error .error-message, -.dropzone-previews .preview:hover.error .error-message { - display: block; -} -.dropzone { - border: 1px solid rgba(0,0,0,0.03); - min-height: 360px; - -webkit-border-radius: 3px; - border-radius: 3px; - background: rgba(0,0,0,0.03); - padding: 23px; -} -.dropzone .default.message { - opacity: 1; - -ms-filter: none; - filter: none; - -webkit-transition: opacity 0.3s ease-in-out; - -moz-transition: opacity 0.3s ease-in-out; - -o-transition: opacity 0.3s ease-in-out; - -ms-transition: opacity 0.3s ease-in-out; - transition: opacity 0.3s ease-in-out; - background-image: url("../images/spritemap.png"); - background-repeat: no-repeat; - background-position: 0 0; - position: absolute; - width: 428px; - height: 123px; - margin-left: -214px; - margin-top: -61.5px; - top: 50%; - left: 50%; -} -@media all and (-webkit-min-device-pixel-ratio: 1.5) { - .dropzone .default.message { - background-image: url("../images/spritemap@2x.png"); - -webkit-background-size: 428px 406px; - -moz-background-size: 428px 406px; - background-size: 428px 406px; - } -} -.dropzone .default.message span { - display: none; -} -.dropzone.square .default.message { - background-position: 0 -123px; - width: 268px; - margin-left: -134px; - height: 174px; - margin-top: -87px; -} -.dropzone.drag-hover .message { - opacity: 0.15; - filter: alpha(opacity=15); - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)"; -} -.dropzone.started .message { - display: block; - opacity: 0; - filter: alpha(opacity=0); - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; -} -.dropzone .preview, -.dropzone-previews .preview { - -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16); - box-shadow: 1px 1px 4px rgba(0,0,0,0.16); - font-size: 14px; -} -.dropzone .preview .details img, -.dropzone-previews .preview .details img { - width: 100px; - height: 100px; -} -.dropzone .preview.image-preview:hover .details img, -.dropzone-previews .preview.image-preview:hover .details img { - display: block; - opacity: 0.1; - filter: alpha(opacity=10); - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; -} -.dropzone .preview.success .success-mark, -.dropzone-previews .preview.success .success-mark { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone .preview.error .error-mark, -.dropzone-previews .preview.error .error-mark { - opacity: 1; - -ms-filter: none; - filter: none; -} -.dropzone .preview.error .progress .upload, -.dropzone-previews .preview.error .progress .upload { - background: #ee1e2d; -} -.dropzone .preview .error-mark, -.dropzone-previews .preview .error-mark, -.dropzone .preview .success-mark, -.dropzone-previews .preview .success-mark { - display: block; - opacity: 0; - filter: alpha(opacity=0); - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - -webkit-transition: opacity 0.4s ease-in-out; - -moz-transition: opacity 0.4s ease-in-out; - -o-transition: opacity 0.4s ease-in-out; - -ms-transition: opacity 0.4s ease-in-out; - transition: opacity 0.4s ease-in-out; - background-image: url("../images/spritemap.png"); - background-repeat: no-repeat; -} -@media all and (-webkit-min-device-pixel-ratio: 1.5) { - .dropzone .preview .error-mark, - .dropzone-previews .preview .error-mark, - .dropzone .preview .success-mark, - .dropzone-previews .preview .success-mark { - background-image: url("../images/spritemap@2x.png"); - -webkit-background-size: 428px 406px; - -moz-background-size: 428px 406px; - background-size: 428px 406px; - } -} -.dropzone .preview .error-mark span, -.dropzone-previews .preview .error-mark span, -.dropzone .preview .success-mark span, -.dropzone-previews .preview .success-mark span { - display: none; -} -.dropzone .preview .error-mark, -.dropzone-previews .preview .error-mark { - background-position: -268px -123px; -} -.dropzone .preview .success-mark, -.dropzone-previews .preview .success-mark { - background-position: -268px -163px; -} -.dropzone .preview .progress .upload, -.dropzone-previews .preview .progress .upload { - -webkit-animation: loading 0.4s linear infinite; - -moz-animation: loading 0.4s linear infinite; - -o-animation: loading 0.4s linear infinite; - -ms-animation: loading 0.4s linear infinite; - animation: loading 0.4s linear infinite; - -webkit-transition: width 0.3s ease-in-out; - -moz-transition: width 0.3s ease-in-out; - -o-transition: width 0.3s ease-in-out; - -ms-transition: width 0.3s ease-in-out; - transition: width 0.3s ease-in-out; - -webkit-border-radius: 2px; - border-radius: 2px; - position: absolute; - top: 0; - left: 0; - width: 0%; - height: 100%; - background-image: url("../images/spritemap.png"); - background-repeat: repeat-x; - background-position: 0px -400px; -} -@media all and (-webkit-min-device-pixel-ratio: 1.5) { - .dropzone .preview .progress .upload, - .dropzone-previews .preview .progress .upload { - background-image: url("../images/spritemap@2x.png"); - -webkit-background-size: 428px 406px; - -moz-background-size: 428px 406px; - background-size: 428px 406px; - } -} -.dropzone .preview.success .progress, -.dropzone-previews .preview.success .progress { - display: block; - opacity: 0; - filter: alpha(opacity=0); - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - -webkit-transition: opacity 0.4s ease-in-out; - -moz-transition: opacity 0.4s ease-in-out; - -o-transition: opacity 0.4s ease-in-out; - -ms-transition: opacity 0.4s ease-in-out; - transition: opacity 0.4s ease-in-out; -} -.dropzone .preview .error-message, -.dropzone-previews .preview .error-message { - display: block; - opacity: 0; - filter: alpha(opacity=0); - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - -webkit-transition: opacity 0.3s ease-in-out; - -moz-transition: opacity 0.3s ease-in-out; - -o-transition: opacity 0.3s ease-in-out; - -ms-transition: opacity 0.3s ease-in-out; - transition: opacity 0.3s ease-in-out; -} -.dropzone .preview:hover.error .error-message, -.dropzone-previews .preview:hover.error .error-message { - opacity: 1; - -ms-filter: none; - filter: none; -} -@-moz-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@-webkit-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@-o-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@-ms-keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} -@keyframes loading { - 0% { - background-position: 0 -400px; - } - - 100% { - background-position: -7px -400px; - } -} diff --git a/source/stylesheets/fontawesome-ie7.css b/source/stylesheets/fontawesome-ie7.css deleted file mode 100644 index d8c34a1..0000000 --- a/source/stylesheets/fontawesome-ie7.css +++ /dev/null @@ -1,46 +0,0 @@ -/*! - * Font Awesome 3.0.2 - * the iconic font designed for use with Twitter Bootstrap - * ------------------------------------------------------- - * The full suite of pictographic icons, examples, and documentation - * can be found at: http://fortawesome.github.com/Font-Awesome/ - * - * License - * ------------------------------------------------------- - * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL - * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - - * http://opensource.org/licenses/mit-license.html - * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ - * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" - - * Contact - * ------------------------------------------------------- - * Email: dave@davegandy.com - * Twitter: http://twitter.com/fortaweso_me - * Work: Lead Product Designer @ http://kyruus.com - */.icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle}.nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px}.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%}.nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px}.btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit}.btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em}a [class^="icon-"],a [class*=" icon-"]{cursor:pointer}ul.icons{text-indent:-1.5em;margin-left:3em}.icon-envelope { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-download-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-qrcode { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-retweet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-comments { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-github-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-upload-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-github { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-rss { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-group { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-google-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-envelope-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-comment-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-github-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/source/stylesheets/fontawesome.css.scss b/source/stylesheets/fontawesome.css.scss deleted file mode 100644 index 24b9a97..0000000 --- a/source/stylesheets/fontawesome.css.scss +++ /dev/null @@ -1,288 +0,0 @@ -/*! - * Font Awesome 3.0.2 - * the iconic font designed for use with Twitter Bootstrap - * ------------------------------------------------------- - * The full suite of pictographic icons, examples, and documentation - * can be found at: http://fortawesome.github.com/Font-Awesome/ - * - * License - * ------------------------------------------------------- - * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL - * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - - * http://opensource.org/licenses/mit-license.html - * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ - * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" - * - * Contact - * ------------------------------------------------------- - * Email: dave@davegandy.com - * Twitter: http://twitter.com/fortaweso_me - * Work: Lead Product Designer @ http://kyruus.com - */ - -$fontAwesomePath: "" !default; -$borderColor: #eee; -$iconMuted: #eee; -@mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } - - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fontAwesomePath}/fontawesome-webfont.eot?v=3.0.1'); - src: url('#{$fontAwesomePath}/fontawesome-webfont.eot?#iefix&v=3.0.1') format("embedded-opentype"), - url('#{$fontAwesomePath}/fontawesome-webfont.woff?v=3.0.1') format("woff"), - url('#{$fontAwesomePath}/fontawesome-webfont.ttf?v=3.0.1') format("truetype"); - font-weight: normal; - font-style: normal; -} - -/* Font Awesome styles - ------------------------------------------------------- */ -[class^="icon-"], -[class*=" icon-"] { - font-family: FontAwesome; - font-weight: normal; - font-style: normal; - text-decoration: inherit; - -webkit-font-smoothing: antialiased; - - /* sprites.less reset */ - display: inline; - width: auto; - height: auto; - line-height: normal; - vertical-align: baseline; - background-image: none; - background-position: 0% 0%; - background-repeat: repeat; - margin-top: 0; -} - -/* more sprites.less reset */ -.icon-white, -.nav-pills > .active > a > [class^="icon-"], -.nav-pills > .active > a > [class*=" icon-"], -.nav-list > .active > a > [class^="icon-"], -.nav-list > .active > a > [class*=" icon-"], -.navbar-inverse .nav > .active > a > [class^="icon-"], -.navbar-inverse .nav > .active > a > [class*=" icon-"], -.dropdown-menu > li > a:hover > [class^="icon-"], -.dropdown-menu > li > a:hover > [class*=" icon-"], -.dropdown-menu > .active > a > [class^="icon-"], -.dropdown-menu > .active > a > [class*=" icon-"], -.dropdown-submenu:hover > a > [class^="icon-"], -.dropdown-submenu:hover > a > [class*=" icon-"] { - background-image: none; -} - -[class^="icon-"]:before, -[class*=" icon-"]:before { - text-decoration: inherit; - display: inline-block; - speak: none; -} - -/* makes sure icons active on rollover in links */ -a { - [class^="icon-"], - [class*=" icon-"] { - display: inline-block; - } -} - -/* makes the font 33% larger relative to the icon container */ -.icon-large:before { - vertical-align: -10%; - font-size: 1.3333333333333333em; -} - -.btn, .nav { - [class^="icon-"], - [class*=" icon-"] { - display: inline; - /* keeps button heights with and without icons the same */ - &.icon-large { line-height: .9em; } - &.icon-spin { display: inline-block; } - } -} - -.nav-tabs, .nav-pills { - [class^="icon-"], - [class*=" icon-"] { - /* keeps button heights with and without icons the same */ - &, &.icon-large { line-height: .9em; } - } -} - -li, .nav li { - [class^="icon-"], - [class*=" icon-"] { - display: inline-block; - width: 1.25em; - text-align: center; - &.icon-large { - /* increased font size for icon-large */ - width: 1.5625em; - } - } -} - -ul.icons { - list-style-type: none; - text-indent: -.75em; - - li { - [class^="icon-"], - [class*=" icon-"] { - width: .75em; - } - } -} - -.icon-muted { - color: $iconMuted; -} - -// Icon Borders -// ------------------------- - -.icon-border { - border: solid 1px $borderColor; - padding: .2em .25em .15em; - @include border-radius(3px); -} - -// Icon Sizes -// ------------------------- - -.icon-2x { - font-size: 2em; - &.icon-border { - border-width: 2px; - @include border-radius(4px); - } -} -.icon-3x { - font-size: 3em; - &.icon-border { - border-width: 3px; - @include border-radius(5px); - } -} -.icon-4x { - font-size: 4em; - &.icon-border { - border-width: 4px; - @include border-radius(6px); - } -} - -// Floats -// ------------------------- - -// Quick floats -.pull-right { float: right; } -.pull-left { float: left; } - -[class^="icon-"], -[class*=" icon-"] { - &.pull-left { - margin-right: .3em; - } - &.pull-right { - margin-left: .3em; - } -} - -.btn { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .18em; } - } - &.icon-spin.icon-large { line-height: .8em; } - } -} - -.btn.btn-small { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .25em; } - } - } -} - -.btn.btn-large { - [class^="icon-"], - [class*=" icon-"] { - margin-top: 0; // overrides bootstrap default - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .05em; } - } - &.pull-left.icon-2x { margin-right: .2em; } - &.pull-right.icon-2x { margin-left: .2em; } - } -} - - -.icon-spin { - display: inline-block; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - -webkit-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; -} - -@-moz-keyframes spin { - 0% { -moz-transform: rotate(0deg); } - 100% { -moz-transform: rotate(359deg); } -} -@-webkit-keyframes spin { - 0% { -webkit-transform: rotate(0deg); } - 100% { -webkit-transform: rotate(359deg); } -} -@-o-keyframes spin { - 0% { -o-transform: rotate(0deg); } - 100% { -o-transform: rotate(359deg); } -} -@-ms-keyframes spin { - 0% { -ms-transform: rotate(0deg); } - 100% { -ms-transform: rotate(359deg); } -} -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(359deg); } -} - -@-moz-document url-prefix() { - .icon-spin { height: .9em; } - .btn .icon-spin { height: auto; } - .icon-spin.icon-large { height: 1.25em; } - .btn .icon-spin.icon-large { height: .75em; } -}.icon-envelope:before { content: "\f003"; } -.icon-star:before { content: "\f005"; } -.icon-user:before { content: "\f007"; } -.icon-trash:before { content: "\f014"; } -.icon-download-alt:before { content: "\f019"; } -.icon-inbox:before { content: "\f01c"; } -.icon-lock:before { content: "\f023"; } -.icon-qrcode:before { content: "\f029"; } -.icon-edit:before { content: "\f044"; } -.icon-comment:before { content: "\f075"; } -.icon-retweet:before { content: "\f079"; } -.icon-key:before { content: "\f084"; } -.icon-comments:before { content: "\f086"; } -.icon-github-sign:before { content: "\f092"; } -.icon-upload-alt:before { content: "\f093"; } -.icon-twitter:before { content: "\f099"; } -.icon-github:before { content: "\f09b"; } -.icon-rss:before { content: "\f09e"; } -.icon-globe:before { content: "\f0ac"; } -.icon-group:before { content: "\f0c0"; } -.icon-cloud:before { content: "\f0c2"; } -.icon-google-plus:before { content: "\f0d5"; } -.icon-envelope-alt:before { content: "\f0e0"; } -.icon-comment-alt:before { content: "\f0e5"; } -.icon-github-alt:before { content: "\f113"; } diff --git a/source/stylesheets/pure.css b/source/stylesheets/pure.css deleted file mode 100644 index 01a3a82..0000000 --- a/source/stylesheets/pure.css +++ /dev/null @@ -1,1757 +0,0 @@ -/*! -Pure v0.4.2 -Copyright 2014 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. -https://github.com/yui/pure/blob/master/LICENSE.md -*/ -/*! -normalize.css v1.1.3 | MIT License | git.io/normalize -Copyright (c) Nicolas Gallagher and Jonathan Neal -*/ -/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ - -/* ========================================================================== - HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -/** - * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. - */ - -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. - * Known issue: no IE 6 support. - */ - -[hidden] { - display: none; -} - -/* ========================================================================== - Base - ========================================================================== */ - -/** - * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using - * `em` units. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-size: 100%; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Address `font-family` inconsistency between `textarea` and other form - * elements. - */ - -html, -button, -input, -select, -textarea { - font-family: sans-serif; -} - -/** - * Address margins handled incorrectly in IE 6/7. - */ - -body { - margin: 0; -} - -/* ========================================================================== - Links - ========================================================================== */ - -/** - * Address `outline` inconsistency between Chrome and other browsers. - */ - -a:focus { - outline: thin dotted; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* ========================================================================== - Typography - ========================================================================== */ - -/** - * Address font sizes and margins set differently in IE 6/7. - * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, - * and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -h2 { - font-size: 1.5em; - margin: 0.83em 0; -} - -h3 { - font-size: 1.17em; - margin: 1em 0; -} - -h4 { - font-size: 1em; - margin: 1.33em 0; -} - -h5 { - font-size: 0.83em; - margin: 1.67em 0; -} - -h6 { - font-size: 0.67em; - margin: 2.33em 0; -} - -/** - * Address styling not present in IE 7/8/9, Safari 5, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -blockquote { - margin: 1em 40px; -} - -/** - * Address styling not present in Safari 5 and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address differences between Firefox and other browsers. - * Known issue: no IE 6/7 normalization. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Address styling not present in IE 6/7/8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address margins set differently in IE 6/7. - */ - -p, -pre { - margin: 1em 0; -} - -/** - * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - _font-family: 'courier new', monospace; - font-size: 1em; -} - -/** - * Improve readability of pre-formatted text in all browsers. - */ - -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -/** - * Address CSS quotes not supported in IE 6/7. - */ - -q { - quotes: none; -} - -/** - * Address `quotes` property not supported in Safari 4. - */ - -q:before, -q:after { - content: ''; - content: none; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== - Lists - ========================================================================== */ - -/** - * Address margins set differently in IE 6/7. - */ - -dl, -menu, -ol, -ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -/** - * Address paddings set differently in IE 6/7. - */ - -menu, -ol, -ul { - padding: 0 0 0 40px; -} - -/** - * Correct list images handled incorrectly in IE 7. - */ - -nav ul, -nav ol { - list-style: none; - list-style-image: none; -} - -/* ========================================================================== - Embedded content - ========================================================================== */ - -/** - * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. - * 2. Improve image quality when scaled in IE 7. - */ - -img { - border: 0; /* 1 */ - -ms-interpolation-mode: bicubic; /* 2 */ -} - -/** - * Correct overflow displayed oddly in IE 9. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== - Figures - ========================================================================== */ - -/** - * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. - */ - -figure { - margin: 0; -} - -/* ========================================================================== - Forms - ========================================================================== */ - -/** - * Correct margin displayed oddly in IE 6/7. - */ - -form { - margin: 0; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct color not being inherited in IE 6/7/8/9. - * 2. Correct text not wrapping in Firefox 3. - * 3. Correct alignment displayed oddly in IE 6/7. - */ - -legend { - border: 0; /* 1 */ - padding: 0; - white-space: normal; /* 2 */ - *margin-left: -7px; /* 3 */ -} - -/** - * 1. Correct font size not being inherited in all browsers. - * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, - * and Chrome. - * 3. Improve appearance and consistency in all browsers. - */ - -button, -input, -select, -textarea { - font-size: 100%; /* 1 */ - margin: 0; /* 2 */ - vertical-align: baseline; /* 3 */ - *vertical-align: middle; /* 3 */ -} - -/** - * Address Firefox 3+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -button, -input { - line-height: normal; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. - * Correct `select` style inheritance in Firefox 4+ and Opera. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - * 4. Remove inner spacing in IE 7 without affecting normal text inputs. - * Known issue: inner spacing remains in IE 6. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ - *overflow: visible; /* 4 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * 1. Address box sizing set to content-box in IE 8/9. - * 2. Remove excess padding in IE 8/9. - * 3. Remove excess padding in IE 7. - * Known issue: excess padding remains in IE 6. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ - *height: 13px; /* 3 */ - *width: 13px; /* 3 */ -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari 5 and Chrome - * on OS X. - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Remove inner padding and border in Firefox 3+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * 1. Remove default vertical scrollbar in IE 6/7/8/9. - * 2. Improve readability and alignment in all browsers. - */ - -textarea { - overflow: auto; /* 1 */ - vertical-align: top; /* 2 */ -} - -/* ========================================================================== - Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -/*csslint important:false*/ - -/* ========================================================================== - Pure Base Extras - ========================================================================== */ - -/** - * Extra rules that Pure adds on top of Normalize.css - */ - -/** - * Always hide an element when it has the `hidden` HTML attribute. - */ - -[hidden] { - display: none !important; -} - -/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/ - -.pure-g { - letter-spacing: -0.31em; /* Webkit: collapse white-space between units */ - *letter-spacing: normal; /* reset IE < 8 */ - *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */ - text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */ - - /* - Sets the font stack to fonts known to work properly with the above letter - and word spacings. See: https://github.com/yui/pure/issues/41/ - - The following font stack makes Pure Grids work on all known environments. - - * FreeSans: Ships with many Linux distros, including Ubuntu - - * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and - Arial to get picked up by the browser, even though neither is available - in Chrome OS. - - * Droid Sans: Ships with all versions of Android. - - * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows. - */ - font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif; - - /* - Use flexbox when possible to avoid `letter-spacing` side-effects. - - NOTE: Firefox (as of 25) does not currently support flex-wrap, so the - `-moz-` prefix version is omitted. - */ - - display: -webkit-flex; - -webkit-flex-flow: row wrap; - - /* IE10 uses display: flexbox */ - display: -ms-flexbox; - -ms-flex-flow: row wrap; -} - -/* Opera as of 12 on Windows needs word-spacing. - The ".opera-only" selector is used to prevent actual prefocus styling - and is not required in markup. -*/ -.opera-only :-o-prefocus, -.pure-g { - word-spacing: -0.43em; -} - -.pure-u { - display: inline-block; - *display: inline; /* IE < 8: fake inline-block */ - zoom: 1; - letter-spacing: normal; - word-spacing: normal; - vertical-align: top; - text-rendering: auto; -} - -/* -Resets the font family back to the OS/browser's default sans-serif font, -this the same font stack that Normalize.css sets for the `body`. -*/ -.pure-g [class *= "pure-u"] { - font-family: sans-serif; -} - -.pure-u-1, -.pure-u-1-1, -.pure-u-1-2, -.pure-u-1-3, -.pure-u-2-3, -.pure-u-1-4, -.pure-u-3-4, -.pure-u-1-5, -.pure-u-2-5, -.pure-u-3-5, -.pure-u-4-5, -.pure-u-5-5, -.pure-u-1-6, -.pure-u-5-6, -.pure-u-1-8, -.pure-u-3-8, -.pure-u-5-8, -.pure-u-7-8, -.pure-u-1-12, -.pure-u-5-12, -.pure-u-7-12, -.pure-u-11-12, -.pure-u-1-24, -.pure-u-2-24, -.pure-u-3-24, -.pure-u-4-24, -.pure-u-5-24, -.pure-u-6-24, -.pure-u-7-24, -.pure-u-8-24, -.pure-u-9-24, -.pure-u-10-24, -.pure-u-11-24, -.pure-u-12-24, -.pure-u-13-24, -.pure-u-14-24, -.pure-u-15-24, -.pure-u-16-24, -.pure-u-17-24, -.pure-u-18-24, -.pure-u-19-24, -.pure-u-20-24, -.pure-u-21-24, -.pure-u-22-24, -.pure-u-23-24, -.pure-u-24-24 { - display: inline-block; - *display: inline; - zoom: 1; - letter-spacing: normal; - word-spacing: normal; - vertical-align: top; - text-rendering: auto; -} - -.pure-u-1-24 { - width: 4.1667%; - *width: 4.1357%; -} - -.pure-u-1-12, -.pure-u-2-24 { - width: 8.3333%; - *width: 8.3023%; -} - -.pure-u-1-8, -.pure-u-3-24 { - width: 12.5000%; - *width: 12.4690%; -} - -.pure-u-1-6, -.pure-u-4-24 { - width: 16.6667%; - *width: 16.6357%; -} - -.pure-u-1-5 { - width: 20%; - *width: 19.9690%; -} - -.pure-u-5-24 { - width: 20.8333%; - *width: 20.8023%; -} - -.pure-u-1-4, -.pure-u-6-24 { - width: 25%; - *width: 24.9690%; -} - -.pure-u-7-24 { - width: 29.1667%; - *width: 29.1357%; -} - -.pure-u-1-3, -.pure-u-8-24 { - width: 33.3333%; - *width: 33.3023%; -} - -.pure-u-3-8, -.pure-u-9-24 { - width: 37.5000%; - *width: 37.4690%; -} - -.pure-u-2-5 { - width: 40%; - *width: 39.9690%; -} - -.pure-u-5-12, -.pure-u-10-24 { - width: 41.6667%; - *width: 41.6357%; -} - -.pure-u-11-24 { - width: 45.8333%; - *width: 45.8023%; -} - -.pure-u-1-2, -.pure-u-12-24 { - width: 50%; - *width: 49.9690%; -} - -.pure-u-13-24 { - width: 54.1667%; - *width: 54.1357%; -} - -.pure-u-7-12, -.pure-u-14-24 { - width: 58.3333%; - *width: 58.3023%; -} - -.pure-u-3-5 { - width: 60%; - *width: 59.9690%; -} - -.pure-u-5-8, -.pure-u-15-24 { - width: 62.5000%; - *width: 62.4690%; -} - -.pure-u-2-3, -.pure-u-16-24 { - width: 66.6667%; - *width: 66.6357%; -} - -.pure-u-17-24 { - width: 70.8333%; - *width: 70.8023%; -} - -.pure-u-3-4, -.pure-u-18-24 { - width: 75%; - *width: 74.9690%; -} - -.pure-u-19-24 { - width: 79.1667%; - *width: 79.1357%; -} - -.pure-u-4-5 { - width: 80%; - *width: 79.9690%; -} - -.pure-u-5-6, -.pure-u-20-24 { - width: 83.3333%; - *width: 83.3023%; -} - -.pure-u-7-8, -.pure-u-21-24 { - width: 87.5000%; - *width: 87.4690%; -} - -.pure-u-11-12, -.pure-u-22-24 { - width: 91.6667%; - *width: 91.6357%; -} - -.pure-u-23-24 { - width: 95.8333%; - *width: 95.8023%; -} - -.pure-u-1, -.pure-u-1-1, -.pure-u-5-5, -.pure-u-24-24 { - width: 100%; -} -/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/ - -.pure-g-r { - letter-spacing: -0.31em; - *letter-spacing: normal; - *word-spacing: -0.43em; - - /* - Sets the font stack to fonts known to work properly with the above letter - and word spacings. See: https://github.com/yui/pure/issues/41/ - - The following font stack makes Pure Grids work on all known environments. - - * FreeSans: Ships with many Linux distros, including Ubuntu - - * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and - Arial to get picked up by the browser, even though neither is available - in Chrome OS. - - * Droid Sans: Ships with all versions of Android. - - * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows. - */ - font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif; - - /* - Use flexbox when possible to avoid `letter-spacing` side-effects. - - NOTE: Firefox (as of 25) does not currently support flex-wrap, so the - `-moz-` prefix version is omitted. - */ - - display: -webkit-flex; - -webkit-flex-flow: row wrap; - - /* IE10 uses display: flexbox */ - display: -ms-flexbox; - -ms-flex-flow: row wrap; -} - -/* Opera as of 12 on Windows needs word-spacing. - The ".opera-only" selector is used to prevent actual prefocus styling - and is not required in markup. -*/ -.opera-only :-o-prefocus, -.pure-g-r { - word-spacing: -0.43em; -} - -/* -Resets the font family back to the OS/browser's default sans-serif font, -this the same font stack that Normalize.css sets for the `body`. -*/ -.pure-g-r [class *= "pure-u"] { - font-family: sans-serif; -} - -.pure-g-r img { - max-width: 100%; - height: auto; -} - -@media (min-width: 980px) { - .pure-visible-phone { - display: none; - } - .pure-visible-tablet { - display: none; - } - .pure-hidden-desktop { - display: none; - } -} - -@media (max-width: 480px) { - .pure-g-r > .pure-u, - .pure-g-r > [class *= "pure-u-"] { - width: 100%; - } -} - -@media (max-width: 767px) { - .pure-g-r > .pure-u, - .pure-g-r > [class *= "pure-u-"] { - width: 100%; - } - .pure-hidden-phone { - display: none; - } - .pure-visible-desktop { - display: none; - } -} - -@media (min-width: 768px) and (max-width: 979px) { - .pure-hidden-tablet { - display: none; - } - .pure-visible-desktop { - display: none; - } -} - -.pure-button { - /* Structure */ - display: inline-block; - *display: inline; /*IE 6/7*/ - zoom: 1; - line-height: normal; - white-space: nowrap; - vertical-align: baseline; - text-align: center; - cursor: pointer; - -webkit-user-drag: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -/* Firefox: Get rid of the inner focus border */ -.pure-button::-moz-focus-inner { - padding: 0; - border: 0; -} - -/*csslint outline-none:false*/ - -.pure-button { - font-family: inherit; - font-size: 100%; - *font-size: 90%; /*IE 6/7 - To reduce IE's oversized button text*/ - *overflow: visible; /*IE 6/7 - Because of IE's overly large left/right padding on buttons */ - padding: 0.5em 1em; - color: #444; /* rgba not supported (IE 8) */ - color: rgba(0, 0, 0, 0.80); /* rgba supported */ - *color: #444; /* IE 6 & 7 */ - border: 1px solid #999; /*IE 6/7/8*/ - border: none rgba(0, 0, 0, 0); /*IE9 + everything else*/ - background-color: #E6E6E6; - text-decoration: none; - border-radius: 2px; -} - -.pure-button-hover, -.pure-button:hover, -.pure-button:focus { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000',GradientType=0); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(transparent), color-stop(40%, rgba(0,0,0, 0.05)), to(rgba(0,0,0, 0.10))); - background-image: -webkit-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); - background-image: -moz-linear-gradient(top, rgba(0,0,0, 0.05) 0%, rgba(0,0,0, 0.10)); - background-image: -o-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); - background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); -} -.pure-button:focus { - outline: 0; -} -.pure-button-active, -.pure-button:active { - box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset; -} - -.pure-button[disabled], -.pure-button-disabled, -.pure-button-disabled:hover, -.pure-button-disabled:focus, -.pure-button-disabled:active { - border: none; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter: alpha(opacity=40); - -khtml-opacity: 0.40; - -moz-opacity: 0.40; - opacity: 0.40; - cursor: not-allowed; - box-shadow: none; -} - -.pure-button-hidden { - display: none; -} - -/* Firefox: Get rid of the inner focus border */ -.pure-button::-moz-focus-inner{ - padding: 0; - border: 0; -} - -.pure-button-primary, -.pure-button-selected, -a.pure-button-primary, -a.pure-button-selected { - background-color: rgb(0, 120, 231); - color: #fff; -} - -.pure-form input[type="text"], -.pure-form input[type="password"], -.pure-form input[type="email"], -.pure-form input[type="url"], -.pure-form input[type="date"], -.pure-form input[type="month"], -.pure-form input[type="time"], -.pure-form input[type="datetime"], -.pure-form input[type="datetime-local"], -.pure-form input[type="week"], -.pure-form input[type="number"], -.pure-form input[type="search"], -.pure-form input[type="tel"], -.pure-form input[type="color"], -.pure-form select, -.pure-form textarea { - padding: 0.5em 0.6em; - display: inline-block; - border: 1px solid #ccc; - box-shadow: inset 0 1px 3px #ddd; - border-radius: 4px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -/* -Need to separate out the :not() selector from the rest of the CSS 2.1 selectors -since IE8 won't execute CSS that contains a CSS3 selector. -*/ -.pure-form input:not([type]) { - padding: 0.5em 0.6em; - display: inline-block; - border: 1px solid #ccc; - box-shadow: inset 0 1px 3px #ddd; - border-radius: 4px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - - -/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */ -/* May be able to remove this tweak as color inputs become more standardized across browsers. */ -.pure-form input[type="color"] { - padding: 0.2em 0.5em; -} - - -.pure-form input[type="text"]:focus, -.pure-form input[type="password"]:focus, -.pure-form input[type="email"]:focus, -.pure-form input[type="url"]:focus, -.pure-form input[type="date"]:focus, -.pure-form input[type="month"]:focus, -.pure-form input[type="time"]:focus, -.pure-form input[type="datetime"]:focus, -.pure-form input[type="datetime-local"]:focus, -.pure-form input[type="week"]:focus, -.pure-form input[type="number"]:focus, -.pure-form input[type="search"]:focus, -.pure-form input[type="tel"]:focus, -.pure-form input[type="color"]:focus, -.pure-form select:focus, -.pure-form textarea:focus { - outline: 0; - outline: thin dotted \9; /* IE6-9 */ - border-color: #129FEA; -} - -/* -Need to separate out the :not() selector from the rest of the CSS 2.1 selectors -since IE8 won't execute CSS that contains a CSS3 selector. -*/ -.pure-form input:not([type]):focus { - outline: 0; - outline: thin dotted \9; /* IE6-9 */ - border-color: #129FEA; -} - -.pure-form input[type="file"]:focus, -.pure-form input[type="radio"]:focus, -.pure-form input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 1px auto #129FEA; -} -.pure-form .pure-checkbox, -.pure-form .pure-radio { - margin: 0.5em 0; - display: block; -} - -.pure-form input[type="text"][disabled], -.pure-form input[type="password"][disabled], -.pure-form input[type="email"][disabled], -.pure-form input[type="url"][disabled], -.pure-form input[type="date"][disabled], -.pure-form input[type="month"][disabled], -.pure-form input[type="time"][disabled], -.pure-form input[type="datetime"][disabled], -.pure-form input[type="datetime-local"][disabled], -.pure-form input[type="week"][disabled], -.pure-form input[type="number"][disabled], -.pure-form input[type="search"][disabled], -.pure-form input[type="tel"][disabled], -.pure-form input[type="color"][disabled], -.pure-form select[disabled], -.pure-form textarea[disabled] { - cursor: not-allowed; - background-color: #eaeded; - color: #cad2d3; -} - -/* -Need to separate out the :not() selector from the rest of the CSS 2.1 selectors -since IE8 won't execute CSS that contains a CSS3 selector. -*/ -.pure-form input:not([type])[disabled] { - cursor: not-allowed; - background-color: #eaeded; - color: #cad2d3; -} -.pure-form input[readonly], -.pure-form select[readonly], -.pure-form textarea[readonly] { - background: #eee; /* menu hover bg color */ - color: #777; /* menu text color */ - border-color: #ccc; -} - -.pure-form input:focus:invalid, -.pure-form textarea:focus:invalid, -.pure-form select:focus:invalid { - color: #b94a48; - border-color: #ee5f5b; -} -.pure-form input:focus:invalid:focus, -.pure-form textarea:focus:invalid:focus, -.pure-form select:focus:invalid:focus { - border-color: #e9322d; -} -.pure-form input[type="file"]:focus:invalid:focus, -.pure-form input[type="radio"]:focus:invalid:focus, -.pure-form input[type="checkbox"]:focus:invalid:focus { - outline-color: #e9322d; -} -.pure-form select { - border: 1px solid #ccc; - background-color: white; -} -.pure-form select[multiple] { - height: auto; -} -.pure-form label { - margin: 0.5em 0 0.2em; -} -.pure-form fieldset { - margin: 0; - padding: 0.35em 0 0.75em; - border: 0; -} -.pure-form legend { - display: block; - width: 100%; - padding: 0.3em 0; - margin-bottom: 0.3em; - color: #333; - border-bottom: 1px solid #e5e5e5; -} - -.pure-form-stacked input[type="text"], -.pure-form-stacked input[type="password"], -.pure-form-stacked input[type="email"], -.pure-form-stacked input[type="url"], -.pure-form-stacked input[type="date"], -.pure-form-stacked input[type="month"], -.pure-form-stacked input[type="time"], -.pure-form-stacked input[type="datetime"], -.pure-form-stacked input[type="datetime-local"], -.pure-form-stacked input[type="week"], -.pure-form-stacked input[type="number"], -.pure-form-stacked input[type="search"], -.pure-form-stacked input[type="tel"], -.pure-form-stacked input[type="color"], -.pure-form-stacked select, -.pure-form-stacked label, -.pure-form-stacked textarea { - display: block; - margin: 0.25em 0; -} - -/* -Need to separate out the :not() selector from the rest of the CSS 2.1 selectors -since IE8 won't execute CSS that contains a CSS3 selector. -*/ -.pure-form-stacked input:not([type]) { - display: block; - margin: 0.25em 0; -} -.pure-form-aligned input, -.pure-form-aligned textarea, -.pure-form-aligned select, -/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ -.pure-form-aligned .pure-help-inline, -.pure-form-message-inline { - display: inline-block; - *display: inline; - *zoom: 1; - vertical-align: middle; -} -.pure-form-aligned textarea { - vertical-align: top; -} - -/* Aligned Forms */ -.pure-form-aligned .pure-control-group { - margin-bottom: 0.5em; -} -.pure-form-aligned .pure-control-group label { - text-align: right; - display: inline-block; - vertical-align: middle; - width: 10em; - margin: 0 1em 0 0; -} -.pure-form-aligned .pure-controls { - margin: 1.5em 0 0 10em; -} - -/* Rounded Inputs */ -.pure-form input.pure-input-rounded, -.pure-form .pure-input-rounded { - border-radius: 2em; - padding: 0.5em 1em; -} - -/* Grouped Inputs */ -.pure-form .pure-group fieldset { - margin-bottom: 10px; -} -.pure-form .pure-group input { - display: block; - padding: 10px; - margin: 0; - border-radius: 0; - position: relative; - top: -1px; -} -.pure-form .pure-group input:focus { - z-index: 2; -} -.pure-form .pure-group input:first-child { - top: 1px; - border-radius: 4px 4px 0 0; -} -.pure-form .pure-group input:last-child { - top: -2px; - border-radius: 0 0 4px 4px; -} -.pure-form .pure-group button { - margin: 0.35em 0; -} - -.pure-form .pure-input-1 { - width: 100%; -} -.pure-form .pure-input-2-3 { - width: 66%; -} -.pure-form .pure-input-1-2 { - width: 50%; -} -.pure-form .pure-input-1-3 { - width: 33%; -} -.pure-form .pure-input-1-4 { - width: 25%; -} - -/* Inline help for forms */ -/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ -.pure-form .pure-help-inline, -.pure-form-message-inline { - display: inline-block; - padding-left: 0.3em; - color: #666; - vertical-align: middle; - font-size: 0.875em; -} - -/* Block help for forms */ -.pure-form-message { - display: block; - color: #666; - font-size: 0.875em; -} - -@media only screen and (max-width : 480px) { - .pure-form button[type="submit"] { - margin: 0.7em 0 0; - } - - .pure-form input:not([type]), - .pure-form input[type="text"], - .pure-form input[type="password"], - .pure-form input[type="email"], - .pure-form input[type="url"], - .pure-form input[type="date"], - .pure-form input[type="month"], - .pure-form input[type="time"], - .pure-form input[type="datetime"], - .pure-form input[type="datetime-local"], - .pure-form input[type="week"], - .pure-form input[type="number"], - .pure-form input[type="search"], - .pure-form input[type="tel"], - .pure-form input[type="color"], - .pure-form label { - margin-bottom: 0.3em; - display: block; - } - - .pure-group input:not([type]), - .pure-group input[type="text"], - .pure-group input[type="password"], - .pure-group input[type="email"], - .pure-group input[type="url"], - .pure-group input[type="date"], - .pure-group input[type="month"], - .pure-group input[type="time"], - .pure-group input[type="datetime"], - .pure-group input[type="datetime-local"], - .pure-group input[type="week"], - .pure-group input[type="number"], - .pure-group input[type="search"], - .pure-group input[type="tel"], - .pure-group input[type="color"] { - margin-bottom: 0; - } - - .pure-form-aligned .pure-control-group label { - margin-bottom: 0.3em; - text-align: left; - display: block; - width: 100%; - } - - .pure-form-aligned .pure-controls { - margin: 1.5em 0 0 0; - } - - /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ - .pure-form .pure-help-inline, - .pure-form-message-inline, - .pure-form-message { - display: block; - font-size: 0.75em; - /* Increased bottom padding to make it group with its related input element. */ - padding: 0.2em 0 0.8em; - } -} - -/*csslint adjoining-classes:false, outline-none:false*/ -/*TODO: Remove this lint rule override after a refactor of this code.*/ - -.pure-menu ul { - position: absolute; - visibility: hidden; -} - -.pure-menu.pure-menu-open { - visibility: visible; - z-index: 2; - width: 100%; -} - -.pure-menu ul { - left: -10000px; - list-style: none; - margin: 0; - padding: 0; - top: -10000px; - z-index: 1; -} - -.pure-menu > ul { position: relative; } - -.pure-menu-open > ul { - left: 0; - top: 0; - visibility: visible; -} - -.pure-menu-open > ul:focus { - outline: 0; -} - -.pure-menu li { position: relative; } - -.pure-menu a, -.pure-menu .pure-menu-heading { - display: block; - color: inherit; - line-height: 1.5em; - padding: 5px 20px; - text-decoration: none; - white-space: nowrap; -} - -.pure-menu.pure-menu-horizontal > .pure-menu-heading { - display: inline-block; - *display: inline; - zoom: 1; - margin: 0; - vertical-align: middle; -} -.pure-menu.pure-menu-horizontal > ul { - display: inline-block; - *display: inline; - zoom: 1; - vertical-align: middle; -} - -.pure-menu li a { padding: 5px 20px; } - -.pure-menu-can-have-children > .pure-menu-label:after { - content: '\25B8'; - float: right; - /* These specific fonts have the Unicode char we need. */ - font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'DejaVu Sans', sans-serif; - margin-right: -20px; - margin-top: -1px; -} - -.pure-menu-can-have-children > .pure-menu-label { - padding-right: 30px; -} - -.pure-menu-separator { - background-color: #dfdfdf; - display: block; - height: 1px; - font-size: 0; - margin: 7px 2px; - overflow: hidden; -} - -.pure-menu-hidden { - display: none; -} - -/* FIXED MENU */ -.pure-menu-fixed { - position: fixed; - top: 0; - left: 0; - width: 100%; -} - - -/* HORIZONTAL MENU CODE */ - -/* Initial menus should be inline-block so that they are horizontal */ -.pure-menu-horizontal li { - display: inline-block; - *display: inline; - zoom: 1; - vertical-align: middle; -} - -/* Submenus should still be display: block; */ -.pure-menu-horizontal li li { - display: block; -} - -/* Content after should be down arrow */ -.pure-menu-horizontal > .pure-menu-children > .pure-menu-can-have-children > .pure-menu-label:after { - content: "\25BE"; -} -/*Add extra padding to elements that have the arrow so that the hover looks nice */ -.pure-menu-horizontal > .pure-menu-children > .pure-menu-can-have-children > .pure-menu-label { - padding-right: 30px; -} - -/* Adjusting separator for vertical menus */ -.pure-menu-horizontal li.pure-menu-separator { - height: 50%; - width: 1px; - margin: 0 7px; -} - -/* Submenus should be horizontal separator again */ -.pure-menu-horizontal li li.pure-menu-separator { - height: 1px; - width: auto; - margin: 7px 2px; -} - - -/*csslint adjoining-classes:false*/ -/*TODO: Remove this lint rule override after a refactor of this code.*/ - -/* MAIN MENU STYLING */ - -.pure-menu.pure-menu-open, -.pure-menu.pure-menu-horizontal li .pure-menu-children { - background: #fff; /* Old browsers */ - border: 1px solid #b7b7b7; -} - -/* remove borders for horizontal menus */ -.pure-menu.pure-menu-horizontal, -.pure-menu.pure-menu-horizontal .pure-menu-heading { - border: none; -} - - -/* LINK STYLES */ - -.pure-menu a { - border: 1px solid transparent; - border-left: none; - border-right: none; - -} - -.pure-menu a, -.pure-menu .pure-menu-can-have-children > li:after { - color: #777; -} - -.pure-menu .pure-menu-can-have-children > li:hover:after { - color: #fff; -} - -/* Focus style for a dropdown menu-item when the parent has been opened */ -.pure-menu .pure-menu-open { - background: #dedede; -} - - -.pure-menu li a:hover, -.pure-menu li a:focus { - background: #eee; -} - -/* DISABLED STATES */ -.pure-menu li.pure-menu-disabled a:hover, -.pure-menu li.pure-menu-disabled a:focus { - background: #fff; - color: #bfbfbf; -} - -.pure-menu .pure-menu-disabled > a { - background-image: none; - border-color: transparent; - cursor: default; -} - -.pure-menu .pure-menu-disabled > a, -.pure-menu .pure-menu-can-have-children.pure-menu-disabled > a:after { - color: #bfbfbf; -} - -/* HEADINGS */ -.pure-menu .pure-menu-heading { - color: #565d64; - text-transform: uppercase; - font-size: 90%; - margin-top: 0.5em; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: #dfdfdf; -} - -/* ACTIVE MENU ITEM */ -.pure-menu .pure-menu-selected a { - color: #000; -} - -/* FIXED MENU */ -.pure-menu.pure-menu-open.pure-menu-fixed { - border: none; - border-bottom: 1px solid #b7b7b7; -} - -/*csslint box-model:false*/ -/*TODO: Remove this lint rule override after a refactor of this code.*/ - - -.pure-paginator { - - /* `pure-g` Grid styles */ - letter-spacing: -0.31em; /* Webkit: collapse white-space between units */ - *letter-spacing: normal; /* reset IE < 8 */ - *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */ - text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */ - - /* `pure-paginator` Specific styles */ - list-style: none; - margin: 0; - padding: 0; -} -.opera-only :-o-prefocus, -.pure-paginator { - word-spacing: -0.43em; -} - -/* `pure-u` Grid styles */ -.pure-paginator li { - display: inline-block; - *display: inline; /* IE < 8: fake inline-block */ - zoom: 1; - letter-spacing: normal; - word-spacing: normal; - vertical-align: top; - text-rendering: auto; -} - - -.pure-paginator .pure-button { - border-radius: 0; - padding: 0.8em 1.4em; - vertical-align: top; - height: 1.1em; -} -.pure-paginator .pure-button:focus, -.pure-paginator .pure-button:active { - outline-style: none; -} -.pure-paginator .prev, -.pure-paginator .next { - color: #C0C1C3; - text-shadow: 0 -1px 0 rgba(0,0,0, 0.45); -} -.pure-paginator .prev { - border-radius: 2px 0 0 2px; -} -.pure-paginator .next { - border-radius: 0 2px 2px 0; -} - -@media (max-width: 480px) { - .pure-menu-horizontal { - width: 100%; - } - - .pure-menu-children li { - display: block; - border-bottom: 1px solid black; - } -} - -.pure-table { - /* Remove spacing between table cells (from Normalize.css) */ - border-collapse: collapse; - border-spacing: 0; - empty-cells: show; - border: 1px solid #cbcbcb; -} - -.pure-table caption { - color: #000; - font: italic 85%/1 arial, sans-serif; - padding: 1em 0; - text-align: center; -} - -.pure-table td, -.pure-table th { - border-left: 1px solid #cbcbcb;/* inner column border */ - border-width: 0 0 0 1px; - font-size: inherit; - margin: 0; - overflow: visible; /*to make ths where the title is really long work*/ - padding: 6px 12px; /* cell padding */ -} -.pure-table td:first-child, -.pure-table th:first-child { - border-left-width: 0; -} - -.pure-table thead { - background: #e0e0e0; - color: #000; - text-align: left; - vertical-align: bottom; -} - -/* -striping: - even - #fff (white) - odd - #f2f2f2 (light gray) -*/ -.pure-table td { - background-color: transparent; -} -.pure-table-odd td { - background-color: #f2f2f2; -} - -/* nth-child selector for modern browsers */ -.pure-table-striped tr:nth-child(2n-1) td { - background-color: #f2f2f2; -} - -/* BORDERED TABLES */ -.pure-table-bordered td { - border-bottom: 1px solid #cbcbcb; -} -.pure-table-bordered tbody > tr:last-child td, -.pure-table-horizontal tbody > tr:last-child td { - border-bottom-width: 0; -} - - -/* HORIZONTAL BORDERED TABLES */ - -.pure-table-horizontal td, -.pure-table-horizontal th { - border-width: 0 0 1px 0; - border-bottom: 1px solid #cbcbcb; -} -.pure-table-horizontal tbody > tr:last-child td { - border-bottom-width: 0; -} diff --git a/source/stylesheets/site.css.scss b/source/stylesheets/site.css.scss deleted file mode 100644 index a9b04ed..0000000 --- a/source/stylesheets/site.css.scss +++ /dev/null @@ -1,73 +0,0 @@ -$fontAwesomePath: "../fonts"; -@import "fontawesome"; -@import "pure"; - -#sitelink { - font-size: 1em; - letter-spacing: -0.11em; - &:hover { - text-decoration: none; - } - line-height: 1em; - span { - vertical-align: -0.2em; - line-height: 1em; - } -} - -body, -.pure-g [class *= "pure-u"], -.pure-g-r [class *= "pure-u"] { - /* Set you're content font stack here: */ - font-family: "Maven Pro", sans-serif; -} - -.icons { - dd { - display:block;clear:both; - } -} - -.content { - margin: 0px auto 50px; - padding: 0px 2em; - max-width: 800px; -} - -.overview { - margin: 0px auto 50px; - max-width: 250px; -} - -.hero { - min-height: 80px; - margin: 0px; - color: rgb(51, 51, 51); - padding: 1em 2em; - text-align: center; - border-bottom: 1px solid rgb(238, 238, 238); - background: none repeat scroll 0% 0% rgb(255, 255, 255); -} - -.hero h1 { - margin: 0.2em 0px; - font-size: 3em; - font-weight: 300; -} - -.hero h2 { - font-weight: 300; - margin: 0px; - color: rgb(204, 204, 204); -} - -a {color: rgb(59, 139, 186);text-decoration: none;} - - -footer { - font-size: 87.5%; - border-top: 1px solid rgb(238, 238, 238); - padding: 0.5em 1.1429em; - background: none repeat scroll 0% 0% rgb(250, 250, 250); - line-height: 1.6em; -}