wprehBm`&zq?c;n!{w#L#nb?u=w$mgjeHAJDaQQ~I&_Xs_X;!#RZ#n|e_W4ZwS57zEM&rmET
z5i0y$bUd(eq#Z(kgU9%{ieM@UW2;34B-K9<&@6kKRYgi+O&Uu$v;tBXvhE^J^ok
zu`OA72wjp_s$t=LN&EryNC8q`$vIa+4wSkB%TG`!WHpLA29VZ36=WSoD=dH1wv7`$8pXWC}9%T
z9OT3uM;{j^)wpJyGY3kz)EBYb)yQg0C@Y)L^+iZyz|kYDT*{ZX(&z;vrB3ETZ&|qy
z%cHD3l;wQLQBpTYKj-)CML&rP&OwH=$jaBT+|S5rY!FI0`A~30D$Cv)BbT6%dew-(
zXYqa`4rK9GBmNDdzSzCb?tONj=dX0r4b
zmZq|F150{Ol2yfFgL)@
z5cXuiHb84skTR%Wq1Ldssq!NR^+Go4Nxc!!N~$~S4eG}TE&!=N0Hok&)*IAIV3tmi
z`aKIr0WGDTMHvjM0q(tV?~VK1e23=-{aOsVvK60d%7tykxo7mk`(^)IHOoU>H}dOGR#r-{>_H8+Z&u;f@x9!7Klvhkba?e6_fDTs
zDJM*r{=m}b-`nF*Aw^679gE*OL3tF1wz6~&wWkEBmQ=%Km?+g9ZxfuiQms;OCMHYu
zh@!Ue!Kg>I?Ydt!pvrffeqGI0=GooN}YFC%Tp&yDTPom-GfBT>Ks8JTNivJ{YX+2m
zDkzlMq~A24{1at@%mHW6fI3nEx@CLP%Pj0Lp!5{ut<}$2*aOHTT?L*d;28@a8c+@6
zWh{Ciy~x5k3m;iH2`C^v16>nfxrKEWHe1+dp&sCK@2Go6-DebC#*g?J<;7mCkf$U}
zl5`ZDNUE4H8PP3SOfh06i-C$?En@3x4NF~E`hunIEbV6LT$Vm!sTWJzUCFJ3Z{H5Y
zcDDt7``U6_)_=aP+!pBe+h=y{65IdDGpdcFbOZTXHwY#uTYUAi7Cx|W6p$?SWMdW9i!Hoh;e87S0k9lb
zu;sY9)H4tb09aySwS{*qd}QH(g<3$8)OW!0oCJ^PNvO&4WM$Q&r`B)US*?wqvi6Qy
z4?na1gFVOK56zJ$$5$;{xn=`rM#2Moa{N7uR=u+6Qv}Wg!k=3=zG~qU>o$HOePJAK
z?fyR8&7bW3<2ITHd-iM?ZDHnp8ur~>(z{^$Z4Z-Fl|lVF48%DoG|8ZT1y-!7HsDZgD?iML0i9S!5TyLWN5H?AG43b*jb{qHds!>
za~hlm#F&)7foB0RC*wb`q=pH*EvaGheoJbY{-q@~%&M`ZhPfv!so}wTkQxx`@`xXg
z7U&F5GM&M_0qza>c|QT%4Z&Hz5zjQJFSE5}!tA!N+QJM#YpIWeECbkX;Y|yxEj(^v
zsfEQ~d+~XzHD2&JG*E9QYlHe}`w<5L_!^7xHNdqg-(wKbBh0Q*cOADZn@x5cUuA}D
zHQNuwxIE=B#$}AJckaXZ3Qupv4ve?({EpuW&u=`4JKGVY+YBDyo$v_9Ni}IV_yw_2
zRUN|P9|N+{Ny>-wSgmkCH;9sIorW_Rw1djcpdEyR=d_nPayZGoN5DQnz{#=(MDB)2
z^@6q}gz+0eDnN|O#82Qb1{vX=L!cWVGG=idxCkDQur&2RIL$gbhrlKB1z_BF>)Wkw
zCXt<`?VJ0QLY@$C;IW=*VS$B5Ej(l41qBRJ0m-49q+GOm}ll^>TtQ8r@dt7
zX=m;rr8Xn#lft;`b|}!1~40*0ka{M^m_0ezC;F0lWzCBo0ghPXfG&FQ;I-1|G%H>EKa-S8=2YybACv4o?Tqf_WEH!Mgwt
zoz~P`C(Re
z253ia^K*G#XOQbAw)=vGOABzFyKeA1=wPms)vW{WjNNwN*1-?i4oOQ4E?x)mr#(}*_?}uYleNYJ}sb8-{m~VIZZk9@q1RkA(_}>yZ
zF(xBmyBn#^l`@b6xAlt%-0lo~N``O%x3dfZ+@0VOnTPo8jtKsoBg0J`_q{fb``Any
z$9-a!jpMGH3o8Wsf7lNM4v1cAT|R%e&YkzHbLT)Mkl8mgtXt;^>&N-T_;Hjo)B1BZ
z7)Op$)2%~iGaNbK-7K*FoI{pcv(CbO*1L1ml4&+tSY=_BarG#Fxk0@bE*}J<{=>qH
z7Hn85-rMBeV__1Y4Sqs}L6B}tAnS1pH2|Mm$=a>tv!W%#se!X%cHMYts*!F4kI>~8sw$)WE$nSMxPq8lyfMhm(Q4A+6-_Bn1(cxq30
zx5x4TbN9FOOjJS)#Y)fAQ
zUxP1jhiq33GouNcecOe9R|Rh6eUCQcR^Iohywi=sc+HK6_|Nag_G2=E{B*vHYb$hZ
zg}ih;Lv8}M`JJ(rR!LFh@~r7dY+}
zG+`Xb86aJ3^l;8^p6UBn##o@%fR*s
zBfW}qiXeyc^^h+G8w4zmgZw2`@J$F)$N7khkfY*9BX&KKaP}*dTpt43!45f)!WaDt
z3MeCQ@()m+%MtS)O}dK91zdwbci!vkOFNvy>VLnJ+@
zAe&-Yi@Fi<^@x*S8_HT(KSbRldVWmL`R6f5w)3&=HhIl4?tGLxC;cdB&jIFi_ntVKx5rm0$ejA#oq`3Q0AGS5eY=?y
zD!SsdUp^ha3r_##lj89fohU*S<7{9)JYH90*QzL-B_Az{aC~qFiWP+>#fbu(Fq}{E
zBJZDehWM#FBIYm3UgQfCAY}ivJt=3~?_et&w%7Z2X5t@lkww_P$`@vie{z4t8NN?V
z_kvp$(${RczUbak`{cPe=7x6?{e|G2MEeTCJBeQA1!5=Bz8>Kb-6al54-nW$)Yk)Z
z{~!E1eD|LeMfx06lKzpuO#ElIYclc`strb6r12#^
zuv=}g)R%C^OOSDj<;XD3xCqTQ4_g$bY~#w;rkf!e3Iw?1ARU5s{oT9~wR<
zUqa3I@Ng7x8Fnwl_M1#-RFnm7j~tF6RSu6B3gK19cWP7R!rze
zy|Dj;TW@Z?{ebOF5GkLv$OiJ*0CWb5M#6tXuyL5kkh|58TT-v5=7Z~)$3fPN1yzu~EP
z$~$A?9tqTK;8=5f7nxo#Zx5VlYE(9NR=ti8oN4M0+;jOaK8bY>b~zc5%UPZwek^G6
zaoMF|&{gzutWff#`g1FEW2$HeRwCHMW`0@ZYa&
zz-BpV!k={YV<)gLPKsz~ec6=!;q1B7LjTwT
z9b+qzh9;hZ4l%AzfpA3f4s0W(T5QH3jy;=v-e~%^uX*vl9`wVS1TGW!+t8R;E^SOK
I7dIyHzwId^q5uE@
literal 0
HcmV?d00001
diff --git a/project.clj b/project.clj
index 381992a..c134c35 100644
--- a/project.clj
+++ b/project.clj
@@ -1,7 +1,7 @@
(defproject youyesyet "0.1.0-SNAPSHOT"
- :description "FIXME: write description"
- :url "http://example.com/FIXME"
+ :description "Canvassing tool for referenda"
+ :url "https://github.com/simon-brooke/youyesyet"
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/clojurescript "1.9.229" :scope "provided"]
diff --git a/resources/public/call-me.html b/resources/public/call-me.html
new file mode 100644
index 0000000..dd23b22
--- /dev/null
+++ b/resources/public/call-me.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+ Please call me!
+
+
+
+
+
+
+
+
+
+ Please call me!
+
+
+
+
+ Use this form to request someone to phone you to discuss your concerns about independence.
+
+
+
+
+
+
diff --git a/resources/public/css/yyy-static.css b/resources/public/css/yyy-static.css
index 1a479b0..0587468 100644
--- a/resources/public/css/yyy-static.css
+++ b/resources/public/css/yyy-static.css
@@ -2,154 +2,112 @@
* Static CSS for basic YouYesYet pages to establish look-and-feel. Something
* more dynamic, designed by someone more skilled than me, will replace it
* later.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ * # The Stylesheet
+ *
+ * ## html elements generally in alphabetic order
*/
-/* Probably have to find Helvetica Neue as a web font */
-
body {
- font-family: "Helvetica Neue", "Sans Bold", "Arial Black", sans-serif;
+ font-family: "Archivo Narrow", "Helvetica", "Sans", sans-serif;
background-color: rgb( 50, 109, 177);
color: white;
}
-/* footer of the document */
+del {
+ color: red;
+}
+
+div.content, form, p, pre, h1, h2, h3, h4, h5 {
+ padding: 0.25em 5%;
+}
+
+dl, menu, ol, table, ul {
+ margin: 0.25em 5%;
+}
+
+/* footer of the page - not-editable, provided by Smeagol */
footer {
+ border-top: thin solid gray;
clear: both;
font-size: smaller;
- padding: 0 2em;
text-align: center;
- color: white;
- background-color: rgba(16, 58, 106, 0.95);
+ color: silver;
+ background-color: rgb(7, 57, 106);
width: 100%;
margin: 0;
+ padding: 0.25em 0;
bottom:0;
position:fixed;
+ vertical-align: top;
z-index:150;
_position:absolute;
_top:expression(eval(document.documentElement.scrollTop+
(document.documentElement.clientHeight-this.offsetHeight)));
}
-header {
- width:100%;
- padding: 2em 0 0.25em 0;
- background-color: rgb(16, 58, 106);
- color: white;
-}
-
-
-/* ids generally in document order */
-/* Overall container div, holds all content of page. Yes, I know it shouldn't have fixed width */
-#nav{
- margin: 0;
- padding: 0;
- width: 100%;
- position: fixed;
- z-index: 149;
-}
-
-#nav:hover #nav-menu {
- display: inline;
-}
-
-
-#nav-icon {
- padding: 0.25em;
-}
-
-#nav-menu {
- display: none;
-}
-
-#nav ul li {
- padding: 0;
- margin: 0;
- display: inline;
-}
-
-#nav ul li a {
- color: white;
- text-decoration: none;
- font-weight: bold;
- padding: 0.1em 0.75em;
- margin: 0;
-}
-
-#nav ul li.active a { background-color: silver;}
-li.nav-item a:hover { background-color: rgb( 240, 240, 240) }
-li.nav-item a:active { background-color: gray; color: white; }
-
-#main-container{
- clear: both;
- width:100%;
-}
-
-.big-link {
- min-width: 8em;
- padding: 0.25em 1em;
- background-color: rgb(16, 58, 106);
- color: white;
- text-decoration: none;
-}
-
-.big-link:hover {
- text-decoration: none;
-}
-
-.big-link:hover::after {
- content: " >";
-}
-
-.big-link-container {
- font-size: 300%;
- padding: 0.5em 0;
- text-align: right;
-}
-
-.dummy {
- font-family: sans-serif;
- font-size: 80%;
- font-weight: normal;
-}
-
-.error {
- background-color: red;
- color: white;
-}
-
-.widget {
- background-color: silver;
- border: thin solid white;
- margin-top: 0;
- margin-bottom: 0;
-}
-
-.world {
- font-size: 8pt;
-}
-
-div.error {
- width: 100%;
+footer div {
+ padding: 0.1em;
}
form {
border: thin solid silver;
}
-h1 {
- font-size: 300%;
+/* header for all pages in the Wiki - editable, provided by users. */
+header {
+ margin-top: 0;
+ width:100%;
+ max-width: 100%;
+ background-color: rgb(7, 57, 106);
+ color: white;
}
-div.content, form, p, pre, ul, ol, dl, menu, h1, h2, h3, h4, h5 {
- padding: 0.25em 10%;
+h1 {
+ font-family: "Archivo Black", "Sans Bold", "Arial Black", sans-serif;
+ font-weight: normal;
+ margin-top: 0;
+}
+
+img {
+ border: 0;
+ padding: 0;
+ vertical-align: middle;
}
input {
+ color: rgb( 50, 109, 177);
background-color: white;
}
-input.submit {
- background-color: green;
+input, select {
+ padding: 0.25em 1.25em;
+}
+
+input.action {
+ color: white;
+ background-color: rgb( 50, 109, 177);
+ font-size: 125%;
+}
+
+input.action-dangerous {
+ color: white;
+ background-color: red;
}
input.required:after {
@@ -157,25 +115,26 @@ input.required:after {
color: red;
}
+ins {
+ color: green;
+}
+
label {
- width: 30em;
+ width: 20%;
min-width: 20em;
border-right: thin solid gray;
+ display: inline-block;
}
-menu li {
- display: inline;
+select {
+ color: white;
+ background-color: rgb( 50, 109, 177);
+ font-size: 125%;
}
-menu li::before {
- content: "|| ";
-}
-
-div.world table, div.world table tr td {
- padding: 0;
- margin: 0;
- border-collapse: collapse;
- border: none;
+table {
+ border: 2px solid black;
+ border-collapse: collapse;
}
table.music-ruled tr:nth-child(odd) {
@@ -184,5 +143,393 @@ table.music-ruled tr:nth-child(odd) {
th, td {
text-align: left;
- padding: 0 0.25em;
+ vertical-align: top;
+ padding: 0.15em 1.5em;
+ border: 1px solid gray;
+}
+
+th {
+ background-color: silver;
+}
+
+/*
+ ## ids generally in document order
+ */
+
+/* Overall container div, holds all content of page. Yes, I know it shouldn't have fixed width */
+#main-container{
+}
+
+#back-link {
+ min-width: 8em;
+ padding: 0.25em 1em;
+ background-color: gray;
+ color: white;
+ text-decoration: none;
+ border-top-right-radius: 0.5em;
+ border-bottom-right-radius: 0.5em;
+}
+
+#back-link:hover, #back-link:active {
+ text-decoration: none;
+ background-color: rgb(160, 160, 160);
+}
+
+#back-link:hover::before, #back-link:active::before {
+ content: "< ";
+}
+
+#back-link-container {
+ float: left;
+ text-align: left;
+}
+
+#back-link-container, .big-link-container {
+ font-size: 200%;
+ padding: 0.5em 0;
+}
+
+#back-link-container > #back-link:hover::before, #back-link-container > #back-link:active::before {
+
+}
+
+/* left bar for all pages in the Wiki - editable, provided by users. Within main-container */
+#side-bar {
+ width: 17%;
+ height: 100%;
+ float: left;
+}
+
+/* cookies information box, fixed, in right margin, just above footer */
+#cookies {
+ width: 30%;
+ float: right;
+ position: fixed;
+ bottom: 3.5em;
+ right: 0;
+ z-index: 175;
+ background: transparent;
+}
+
+/* about-cookies box: permanently visible part of cookies information box */
+#about-cookies {
+ clear: right;
+ font-size: 66%;
+ float: right;
+ text-align: right;
+ padding: 0.25em 2em;
+ border-radius: 0.25em;
+ color: white;
+ background:rgba(40,40,40,0.8);
+}
+
+/* more-about-cookies box, normally hidden */
+#more-about-cookies {
+ display: none;
+ padding: 0.5em 2em;
+ border-radius: 0.5em;
+ color: white;
+ background:rgba(40,40,40,0.8);
+ border-bottom: thin solid white;
+}
+
+/* but magically appears on mouseover */
+#cookies:hover #more-about-cookies {
+ display: block;
+}
+
+.change {
+ background-color: rgb( 223, 223, 223);
+ border: thin solid silver;
+}
+
+.error {
+ width: 100%;
+ background-color: red;
+ color: white;
+ border: thin solid maroon;
+}
+
+.fill-container {
+ padding: 0;
+ border: 0;
+}
+
+.message {
+ color: darkgreen;
+ background-color: silver;
+ border: thin solid lime;
+}
+
+.big-link {
+ min-width: 8em;
+ padding: 0.25em 1em;
+ background-color: rgb(16, 58, 106);
+ color: white;
+ text-decoration: none;
+ border-top-left-radius: 0.5em;
+ border-bottom-left-radius: 0.5em;
+}
+
+.big-link:hover, .big-link:active {
+ text-decoration: none;
+}
+
+.big-link:hover::after, .big-link:active::after {
+ content: " >";
+}
+
+.big-link-container > .big-link:hover, .big-link-container > .big-link:active {
+ background-color: rgb(19, 77, 143);
+}
+
+.big-link-container {
+ text-align: right;
+}
+
+.minor-controls {
+ list-style: none;
+ float: right;
+ right: 0;
+ padding: 0.25em 2em;
+ border-radius: 0.25em;
+ color: white;
+ background:rgba(40,40,40,0.8);
+ font-size: 66%;
+}
+
+.minor-controls li {
+ display: inline;
+}
+
+.minor-controls a {
+ float: right;
+ padding: 0.25em 2em;
+ color: white;
+}
+
+.warn {
+ color: maroon;
+}
+
+.widget {
+ background-color: rgb(19, 77, 143);
+ border: thin solid white;
+ margin-top: 0;
+ margin-bottom: 0;
+ width: 90%;
+}
+
+.wiki {
+ margin: 0;
+}
+
+/* desktops and laptops, primarily. Adapted to mouse; targets may be small */
+@media all and (min-device-width: 1025px) {
+ /* content of the current page in the Wiki - editable, provided by users. Within main-container */
+ #content {
+ border: thin solid silver;
+ width: 80%;
+ float: right;
+ padding-bottom: 5em;
+ }
+
+ #phone-side-bar, #phone-credits {
+ display: none;
+ }
+
+ /* top-of-page navigation, not editable, provided by Smeagol */
+ #nav{
+ margin: 0;
+ padding: 0;
+ top: 0;
+ width: 100%;
+ _position: absolute;
+ _top: expression(document.documentElement.scrollTop);
+ z-index: 149;
+ background:rgba(7,27,51,0.8);
+ }
+
+ /* only needed for fly-out menu effect on tablet and phone stylesheets */
+ #nav-icon {
+ display: none;
+ }
+
+ #nav-menu {
+ margin: 0;
+ padding: 0;
+ }
+
+ #nav menu li {
+ padding: 0;
+ margin: 0;
+ display: inline;
+ }
+
+ #nav menu li a {
+ color: white;
+ text-decoration: none;
+ font-weight: bold;
+ padding: 0.1em 0.75em;
+ margin: 0;
+ }
+
+ #nav menu li.active a { background: gray;}
+ li.nav-item a:hover { background: rgb( 240, 240, 240) }
+ li.nav-item a:active { background: gray; color: white; }
+
+ #nav menu li#user {
+ padding: 0 1em;
+ float: right;
+ }
+}
+
+/* tablets, primarily. Adapted to touch; targets are larger */
+@media all and (min-device-width: 769px) and (max-device-width: 1024px) {
+ h1 {
+ /* I wouldn't normally use a px value, but the menu icon is 49px wide */
+ padding: 0.25em 5%;
+ padding-left: 100px;
+ }
+
+ /* content of the current page in the Wiki - editable, provided by users. Within main-container */
+ #content {
+ border: thin solid silver;
+ width: 80%;
+ float: right;
+ padding-bottom: 5em;
+ }
+
+ #nav{
+ margin: 0;
+ padding: 0;
+ position: fixed;
+ z-index: 149;
+ color: silver;
+ background:rgba(40,40,40,0.9);
+ }
+
+ #nav a {
+ color: white;
+ text-decoration: none;
+ font-weight: bold;
+ }
+
+ #nav:hover #nav-menu {
+ display: block;
+ list-style-type: none;
+ width: 100%;
+ }
+
+ #nav-icon {
+ padding: 0;
+ }
+
+ #nav-menu, #phone-side-bar {
+ display: none;
+ }
+
+ #nav menu li {
+ padding: 0.5em;
+ margin: 0.5 em;
+ font-size: 150%;
+ }
+
+ #nav menu li a {
+ }
+
+ #nav ul li.active a { background: silver;}
+ li.nav-item a:hover { background: rgb( 240, 240, 240) }
+ li.nav-item a:active { background: gray; color: white; }
+
+ #nav menu #user {
+ text-decoration: none;
+ font-weight: bold;
+ margin: 0;
+ }
+}
+
+/* phones, and, indeed, smaller phones. Adapted to touch; display radically
+ * decluttered */
+@media all and (max-device-width: 768px) {
+ footer {
+ display: none;
+ }
+
+ h1 {
+ /* I wouldn't normally use a px value, but the menu icon is 49px wide */
+ padding: 0.25em 5%;
+ padding-left: 100px;
+ text-align: right;
+ }
+
+ /* content of the current in the Wiki - editable, provided by users. Within main-container */
+ #content {
+ border: thin solid silver;
+ width: 100%;
+ padding-bottom: 2em;
+ }
+
+ #main-container {
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ }
+
+
+ #cookies {
+ display: none;
+ }
+
+ #nav{
+ margin: 0;
+ padding: 0;
+ position: fixed;
+ z-index: 149;
+ color: silver;
+ background:rgba(40,40,40,0.9);
+ }
+
+ #nav a {
+ color: white;
+ text-decoration: none;
+ font-weight: bold;
+ }
+
+ #nav:hover #nav-menu, #nav:hover #phone-side-bar {
+ display: block;
+ list-style-type: none;
+ width: 100%;
+ }
+
+ #nav-icon {
+ padding: 0;
+ }
+
+ #nav-menu, #phone-side-bar {
+ display: none;
+ }
+
+ #nav menu li {
+ padding: 0.5em;
+ margin: 0.5 em;
+ font-size: 150%;
+ }
+
+ #nav menu li a {
+ }
+
+ #nav ul li.active a { background: silver;}
+ li.nav-item a:hover { background: rgb( 240, 240, 240) }
+ li.nav-item a:active { background: gray; color: white; }
+
+ #nav menu #user {
+ text-decoration: none;
+ font-weight: bold;
+ margin: 0;
+ }
+
+ #side-bar {
+ display: none;
+ }
}
diff --git a/resources/public/electorsview.html b/resources/public/electorsview.html
new file mode 100644
index 0000000..172c27f
--- /dev/null
+++ b/resources/public/electorsview.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+ Sign up!
+
+
+
+
+
+
+
+
+ 43 Imaginary Terrace
+
+
+
+
+
+
diff --git a/resources/public/facebook-login.html b/resources/public/facebook-login.html
index 1dbdffc..449cf9a 100644
--- a/resources/public/facebook-login.html
+++ b/resources/public/facebook-login.html
@@ -4,20 +4,21 @@
+
+
Login with Facebook
-
@@ -29,8 +30,11 @@
The actual login page is provided by the 0-auth provider chosen by the user. We don't
handle login ourselves, and we don't store any passwords.
+
diff --git a/resources/public/google-login.html b/resources/public/google-login.html
index f15ac67..276fb42 100644
--- a/resources/public/google-login.html
+++ b/resources/public/google-login.html
@@ -4,20 +4,21 @@
+
+
Login with Google
-
@@ -29,8 +30,11 @@
The actual login page is provided by the 0-auth provider chosen by the user. We don't
handle login ourselves, and we don't store any passwords.