]> source.dussan.org Git - nextcloud-server.git/commitdiff
Redesign guest pages for better accessibility
authorCarl Schwan <carl@carlschwan.eu>
Mon, 18 Jul 2022 15:58:05 +0000 (17:58 +0200)
committerCarl Schwan <carl@carlschwan.eu>
Wed, 27 Jul 2022 08:43:21 +0000 (10:43 +0200)
- Use white box and put content on it
- Improve focus indicator

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
41 files changed:
core/Controller/LoginController.php
core/css/guest.css
core/css/inputs.css
core/css/inputs.css.map
core/css/inputs.scss
core/css/login/authpicker.css
core/css/server.css
core/css/server.css.map
core/css/styles.css
core/css/styles.css.map
core/css/styles.scss
core/src/components/login/LoginButton.vue
core/src/components/login/ResetPassword.vue
core/src/components/setup/InstallButton.vue [deleted file]
core/src/components/setup/RecommendedApps.vue
core/src/install.js
core/src/views/Login.vue
core/templates/403.php
core/templates/404-profile.php
core/templates/404.php
core/templates/error.php
core/templates/exception.php
core/templates/installation.php
core/templates/installation_forbidden.php
core/templates/installation_incomplete.php
core/templates/login.php
core/templates/loginflow/authpicker.php
core/templates/loginflow/grant.php
core/templates/loginflowv2/authpicker.php
core/templates/loginflowv2/grant.php
core/templates/publicshareauth.php
core/templates/update.admin.php
core/templates/update.use-cli.php
core/templates/update.user.php
dist/core-install.js
dist/core-install.js.map
dist/core-login.js
dist/core-login.js.map
dist/core-recommendedapps.js
dist/core-recommendedapps.js.map
tests/acceptance/features/bootstrap/LoginPageContext.php

index 3694e672977c0a855237b837197fd2c9c9ca41e0..008bbc5c868d706269140fd345390e68572d4461 100644 (file)
@@ -205,6 +205,7 @@ class LoginController extends Controller {
                ];
 
                $this->initialStateService->provideInitialState('core', 'countAlternativeLogins', count($parameters['alt_login']));
+               $this->initialStateService->provideInitialState('core', 'alternativeLogins', $parameters['alt_login']);
 
                return new TemplateResponse(
                        $this->appName,
index a9524c95722035791b583644cd26748829308e65..4a88674df4fbe9d189430d89fcfc859d41d79ccd 100644 (file)
@@ -1,4 +1,5 @@
 /* Copyright (c) 2011, Jan-Christoph Borchardt, http://jancborchardt.net
+ * SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu>
  This file is licensed under the Affero General Public License version 3 or later.
  See the COPYING-README file. */
 
@@ -10,7 +11,7 @@ body { line-height:1.5; }
 table { border-collapse:separate; border-spacing:0; white-space:nowrap; }
 caption, th, td { text-align:left; font-weight:normal; }
 table, td, th { vertical-align:middle; }
-a { border:0; color:#000; text-decoration:none;}
+a { border:0; color: var(--color-main-text); text-decoration:none;}
 a, a *, input, input *, select, .button span, label { cursor:pointer; }
 ul { list-style:none; }
 
@@ -34,19 +35,17 @@ body {
 
 /* Various fonts settings */
 #body-login a {
-       color: var(--color-primary-text);
        font-weight: 600;
 }
+#body-login footer a {
+    color: var(--color-primary-text);
+}
 #body-login a:not(.button):hover,
 #body-login a:not(.button):focus {
        text-decoration: underline;
        text-decoration-skip-ink: auto;
 }
 
-#showAdvanced {
-       color: var(--color-primary-text);
-}
-
 em {
        font-style: normal;
        opacity: .5;
@@ -109,19 +108,22 @@ form {
 }
 form fieldset {
        width: 260px;
-       margin: auto auto 20px;
+       margin-top: 8px;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
 }
 form #sqliteInformation {
-       margin-top: -20px;
+       margin-top: 0px;
        margin-bottom: 20px;
 }
 form #adminaccount {
        margin-bottom: 15px;
 }
+form #advancedHeader {
+       width: 100%;
+}
 form fieldset legend, #datadirContent label {
        width: 100%;
 }
@@ -143,8 +145,7 @@ form #datadirField legend {
 
 /* Buttons and input */
 #submit-wrapper,
-#reset-password-wrapper,
-.alternative-logins {
+#reset-password-wrapper {
        display: flex;
        align-items: center;
        justify-content: center;
@@ -153,45 +154,6 @@ form #datadirField legend {
                                                   absolutely positioned descendant icons */
 }
 
-.alternative-logins {
-       margin: auto;
-       display: block;
-       min-width: 260px;
-       max-width: 400px;
-       overflow: hidden;
-}
-
-.alternative-logins a.button {
-       margin: 0;
-       display: block;
-       font-size: 15px;
-       white-space: nowrap;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-
-.alternative-logins a.button::before {
-       content: "";
-       background-repeat: no-repeat;
-       background-size: contain;
-       width: 0;
-       margin-right: 0;
-       height: 18px;
-       display: inline-block;
-       vertical-align: bottom;
-}
-
-.alternative-logins .button {
-       color: var(--color-text-lighter);
-       padding: 12px 20px;
-}
-
-
-.alternative-logins .button.single-alt-login-option {
-        width: 260px;
-        margin: 0 auto;
- }
-
 @media only screen and (max-width: 1024px) {
        .wrapper {
                margin-top: 0;
@@ -246,11 +208,21 @@ input:not([type='password']),
 a.button {
        font-size: 20px;
        margin: 5px;
-       padding: 11px 10px 9px;
+       padding: 5px;
        outline: none;
        border-radius: 3px; /* --border-radius */
        -webkit-appearance: none;
 }
+
+input:not([type='radio']),
+input:not([type='range']) {
+    border-width: 2px;
+}
+
+input:not([type='range']):focus-visible {
+    box-shadow: none !important;
+}
+
 input[type='submit'],
 input[type='submit'].icon-confirm,
 input[type='button'],
@@ -264,36 +236,43 @@ select {
        padding: 12px;
        background-color: var(--color-main-background);
        font-weight: bold;
-       color: var(--color-text-lighter);
+       color: var(--color-text);
        border: none;
        border-radius: 100px; /* --border-radius-pill */
        cursor: pointer;
 }
+
+.icon-confirm.input-button-inline {
+       position: absolute;
+       right: 3px;
+       top: 5px;
+}
+
 input[type='submit']:focus {
-       border: 2px solid black !important;
-       padding: 8px;
+       box-shadow: 0 0 0 2px inset var(--color-main-text) !important;
 }
 input[type='text'],
 input[type='tel'],
 input[type='password'],
 input[type='email'] {
-       width: 249px;
-       background: #fff;
+       width: 266px;
+       padding: 5px 10px;
        color: var(--color-text-lighter);
        cursor: text;
        font-family: inherit;
        -webkit-appearance: textfield;
        -moz-appearance: textfield;
        box-sizing: content-box;
-       border: none;
        font-weight: normal;
+       margin-left: 0;
+       margin-right: 0;
 }
 input[type='text']:focus-visible,
 input[type='password']:focus-visible {
        outline: var(--color-primary) auto 2px !important;
 }
 input[type='password'].password-with-toggle, input[type='text'].password-with-toggle {
-       width: 219px;
+       width: 236px;
        padding-right: 40px;
 }
 input.login {
@@ -309,17 +288,6 @@ input.update-continue {
        overflow: hidden;
        text-overflow: ellipsis;
 }
-.updateAnyways a.updateAnywaysButton {
-       font-size: 14px;
-       padding: 10px 20px;
-       color: #666 !important;
-       display: inline-block;
-       border-radius: 100px; /* --border-radius-pill */
-       margin: 15px 5px;
-}
-.updateAnyways a.updateAnywaysButton:hover {
-       color: #222 !important;
-}
 
 /* Get rid of the inside dotted line in Firefox */
 button::-moz-focus-inner,
@@ -327,15 +295,6 @@ input::-moz-focus-inner {
        border: 0;
 }
 
-input.primary,
-button.primary,
-a.primary {
-       border: 1px solid var(--color-primary-text);
-       background-color: var(--color-primary);
-       color: var(--color-primary-text);
-       transition: color 100ms ease-in-out;
-}
-
 input.primary:not(:disabled):hover,
 input.primary:not(:disabled):focus,
 button.primary:not(:disabled):hover,
@@ -343,8 +302,6 @@ button.primary:not(:disabled):focus,
 a.primary:not(:disabled):hover,
 a.primary:not(:disabled):focus {
        color: var(--color-primary-text);
-       background-image: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
-       background-position: initial;
 }
 
 /* Checkboxes - white only for login */
@@ -405,14 +362,13 @@ input[type='checkbox'].checkbox--white:checked + label:before {
        display: inline-block;
        position: relative;
        top: -20px;
-       width: 269px;
+       width: 286px;
        border-radius: 0 0 3px 3px;
        overflow: hidden;
        height: 3px;
 }
 .tooltip-inner {
        font-weight: bold;
-       color: #ccc;
        padding: 3px 6px;
        text-align: center;
 }
@@ -420,41 +376,15 @@ input[type='checkbox'].checkbox--white:checked + label:before {
 /* Show password toggle */
 #show, #dbpassword-toggle {
        position: absolute;
-       right: 1em;
-       top: .8em;
-       float: right;
-}
-#show + label, #dbpassword-toggle + label {
-       right: 21px;
-       top: 15px !important;
-       margin: -14px !important;
-       padding: 14px !important;
-}
-#show:checked + label, #dbpassword-toggle:checked + label, #personal-show:checked + label {
-       opacity: .8;
-}
-#show + label, #dbpassword-toggle + label, #personal-show + label {
-       position: absolute !important;
-       height: 20px;
-       width: 24px;
-       background-image: url('../img/actions/toggle.svg?v=1');
-       background-repeat: no-repeat;
-       background-position: center;
-       opacity: .3;
-}
-#show + label:before, #dbpassword-toggle + label:before, #personal-show + label:before {
-       display: none;
-}
-/* Feedback for keyboard focus and mouse hover */
-#show:focus + label, #dbpassword-toggle:focus + label, #personal-show:focus + label,
-#show + label:hover, #dbpassword-toggle + label:hover, #personal-show + label:hover {
-  opacity: 1;
-}
-#show:focus-visible + label, #dbpassword-toggle:focus-visible + label, #personal-show:focus-visible + label {
-       box-shadow: var(--color-primary) 0 0 0 2px;
-       opacity: 1;
-       border-radius: 9999px;
+       right: 2px;
+       top: 4px;
+       display: flex;
+       justify-content: center;
+       width: 44px;
+       align-content: center;
+       padding: 13px;
 }
+
 #pass2, input[name='personal-password-clone'] {
        padding: .6em 2.5em .4em .4em;
        width: 8em;
@@ -476,7 +406,6 @@ form fieldset legend,
 form fieldset .warning-info,
 form input[type='checkbox']+label {
        text-align: center;
-       color: var(--color-primary-text);
 }
 /* overrides another !important statement that sets this to unreadable black */
 form .warning input[type='checkbox']:hover+label,
@@ -555,13 +484,8 @@ form .warning input[type='checkbox']+label {
 #reset-password-wrapper + a {
        display: inline-block;
        font-weight: normal !important;
-       padding: 12px;
-       color: var(--color-primary-text);
+       padding: 12px 12px 0 12px;
        cursor: pointer;
-       text-shadow: 0 0 2px rgba(0, 0, 0, .4); /* better readability on bright background */
-}
-#lost-password {
-       margin-top: -6px;
 }
 #forgot-password {
        padding: 11px;
@@ -618,20 +542,17 @@ form #selectDbType label {
        flex-grow: 1;
        margin: 0 -1px 5px;
        font-size: 12px;
-       background:#f8f8f8;
-       color:#888;
+       background: var(--color-background-hover);
+       color: var(--color-main-text);
        cursor:pointer;
-       border: 1px solid #ddd;
+       border: 1px solid var(--color-border);
        padding: 10px 17px;
 }
 form #selectDbType label.ui-state-hover,
 form #selectDbType label.ui-state-active {
        font-weight: normal;
-       color:#000;
-       background-color:#e8e8e8;
-}
-form #selectDbType .ui-visual-focus {
-       box-shadow: none;
+       background: var(--color-background-darker);
+       color: var(--color-main-text);
 }
 form #selectDbType label span {
        display: none;
@@ -642,31 +563,13 @@ form #selectDbType label span {
 .groupmiddle,
 .groupbottom {
        position: relative;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
        user-select: none;
 }
-.grouptop input {
-       margin-bottom: 0 !important;
-       border-bottom: 0 !important;
-       border-bottom-left-radius: 0 !important;
-       border-bottom-right-radius: 0 !important;
-}
-.groupmiddle input {
-       margin-top: 0 !important;
-       margin-bottom: 0 !important;
-       border-top: 0 !important;
-       border-bottom: 0 !important;
-       border-radius: 0 !important;
-       box-shadow: 0 1px 0 rgba(0,0,0,.1) inset !important;
-}
-.groupbottom input {
-       margin-top: 0 !important;
-       border-top: 0 !important;
-       border-top-right-radius: 0 !important;
-       border-top-left-radius: 0 !important;
-       box-shadow: 0 1px 0 rgba(0,0,0,.1) inset !important;
+.grouptop, .groupmiddle {
+       margin-bottom: 8px !important;
+}
+.groupbottom {
+       margin-bottom: 13px;
 }
 .groupbottom input[type=submit] {
        box-shadow: none !important;
@@ -678,16 +581,9 @@ form #selectDbType label span {
 
 /* Errors */
 /* Warnings and errors are the same */
-.body-login-container,
-.warning,
-.update,
-.error {
+.body-login-container {
        display: flex;
        flex-direction: column;
-       margin-top: 15px;
-       padding: 15px;
-       background-color: rgba(0,0,0,.3);
-       color: #fff;
        text-align: left;
        word-wrap: break-word;
        border-radius: 10px; /* --border-radius-large */
@@ -698,14 +594,6 @@ form #selectDbType label span {
        user-select: text;
 }
 
-.body-login-container h2,
-.warning h2,
-.update h2,
-.error h2 {
-       color: #fff;
-       text-align: center;
-}
-
 /* TODO: Change all .warning/.update/.error to .body-login-container */
 .body-login-container .icon-big {
        background-size: 70px;
@@ -720,48 +608,6 @@ form #selectDbType label span {
     margin-bottom: 12px;
 }
 
-.warning.updateAnyways {
-       text-align: center;
-}
-.warning legend,
-.warning a,
-.error a {
-       color: #fff !important;
-       font-weight: bold !important;
-       opacity: 1;
-}
-.error a.button {
-       color: #555 !important;
-       display: inline-block;
-       text-align: center;
-}
-.error pre {
-       white-space: pre-wrap;
-       text-align: left;
-}
-.error-wide {
-       width: 700px;
-       margin-top: 35px;
-}
-.error-wide .button {
-       color: black !important;
-}
-.warning-input {
-       border-color: #ce3702 !important;
-}
-a.warning {
-       cursor: pointer;
-}
-fieldset.warning legend,
-fieldset.update legend {
-       top: 18px;
-       position: relative;
-}
-fieldset.warning legend + p,
-fieldset.update legend + p {
-       margin-top: 12px;
-}
-
 /* Various paragraph styles */
 .infogroup {
        margin: 8px 0;
@@ -771,7 +617,6 @@ fieldset.update legend + p {
 }
 p.info {
        margin: 20px auto;
-       text-shadow: 0 0 2px rgba(0, 0, 0, .4); /* better readability on bright background */
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
@@ -947,3 +792,78 @@ label.infield,
 a.legal {
        font-size: smaller;
 }
+
+.notecard.success {
+       --note-background: rgba(var(--color-success-rgb), 0.2);
+       --note-theme: var(--color-success);
+}
+.notecard.error {
+       --note-background: rgba(var(--color-error-rgb), 0.2);
+       --note-theme: var(--color-error);
+}
+.notecard.warning {
+       --note-background: rgba(var(--color-warning-rgb), 0.2);
+       --note-theme: var(--color-warning);
+}
+.notecard {
+       color: var(--color-text-light);
+       background-color: var(--note-background);
+       border: 1px solid var(--color-border);
+       border-left: 4px solid var(--note-theme);
+       border-radius: var(--border-radius);
+       box-shadow: rgba(43, 42, 51, 0.05) 0px 1px 2px 0px;
+       margin: 1rem 0;
+       margin-top: 1rem;
+       padding: 1rem;
+       text-align: left;
+}
+
+.notecard:last-child {
+       margin-bottom: 0;
+}
+
+.notecard pre {
+       background-color: var(--color-background-dark);
+       margin-top: 1rem;
+       padding: 1em 1.3em;
+       border-radius: var(--border-radius);
+}
+
+.guest-box, .body-login-container {
+       color: var(--color-main-text);
+       background-color: var(--color-main-background);
+       padding: 16px;
+       border-radius: var(--border-radius-large);
+       box-shadow: 0 0 10px var(--color-box-shadow);
+       display: inline-block;
+}
+
+.guest-box.wide {
+       display: block;
+       text-align: left;
+}
+
+.guest-box fieldset {
+       margin-top: 0;
+}
+
+.guest-box pre {
+       overflow-x: scroll;
+}
+
+button.toggle-password {
+       background-color: transparent;
+       border-width: 0;
+       height: 44px;
+}
+
+/** Utilities */
+
+.margin-top {
+       margin-top: 1rem !important;
+}
+
+
+.text-left {
+       text-align: left !important;
+}
index 2e7adbf46c7d10f65d64fa962f7f8f050fe98cd1..45ee4d66f46cced402a41b313e911d934d479314 100644 (file)
@@ -164,7 +164,7 @@ textarea:disabled,
 div[contenteditable=true]:disabled,
 .pager li a:disabled {
   background-color: var(--color-background-dark);
-  color: var(--color-text-maxcontrast);
+  color: var(--color-main-text);
   cursor: default;
   opacity: 0.5;
 }
@@ -177,15 +177,14 @@ div[contenteditable=true]:required,
 .pager li a:required {
   box-shadow: none;
 }
-div.select2-drop .select2-search input:invalid,
-select:invalid,
-button:not(.button-vue):invalid, .button:invalid,
-input:not([type=range]):invalid,
-textarea:invalid,
-div[contenteditable=true]:invalid,
-.pager li a:invalid {
-  box-shadow: none !important;
-  border-color: var(--color-error);
+div.select2-drop .select2-search input:user-invalid,
+select:user-invalid,
+button:not(.button-vue):user-invalid, .button:user-invalid,
+input:not([type=range]):user-invalid,
+textarea:user-invalid,
+div[contenteditable=true]:user-invalid,
+.pager li a:user-invalid {
+  box-shadow: 0 0 0 2px var(--color-error) !important;
 }
 div.select2-drop .select2-search input.primary,
 select.primary,
index 3051660b1d0f8b21e3a77941cec01ca307470d7d..d0db10fd3d5ba54eb0729c9b5bd27d5aabee2797 100644 (file)
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["variables.scss","inputs.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA+BA;;AA7BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QA9He;;AAgIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YAjKgB;EAkKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QArPgB;;;AAwPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QArQc;EAsQd,OAtQc;EAuQd;EACA;EACA;;AACA;EACC;ACpOH;EAEA;;AD0OG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAjsBe;AAksBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC","file":"inputs.css"}
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["variables.scss","inputs.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QA7He;;AA+HhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YAhKgB;EAiKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QApPgB;;;AAuPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QApQc;EAqQd,OArQc;EAsQd;EACA;EACA;;AACA;EACC;ACnOH;EAEA;;ADyOG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAhsBe;AAisBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC","file":"inputs.css"}
\ No newline at end of file
index 6bf32ede8b45dc0f33299cfd28d4dfc3f9c342ab..acad10da88ec32f535656146f8eaba15a192b2f4 100644 (file)
@@ -78,16 +78,15 @@ div[contenteditable=true],
        }
        &:disabled {
                background-color: var(--color-background-dark);
-               color: var(--color-text-maxcontrast);
+               color: var(--color-main-text);
                cursor: default;
                opacity: 0.5;
        }
        &:required {
                box-shadow: none;
        }
-       &:invalid {
-               box-shadow: none !important;
-               border-color: var(--color-error);
+       &:user-invalid {
+               box-shadow: 0 0 0 2px var(--color-error) !important;
        }
        /* Primary action button, use sparingly */
        &.primary {
index d245c48680ff4212ee9ef61816768b99dcdc56d0..fe89c82baf26f80c0d42731ddf9a3e5939ee2a50 100644 (file)
@@ -1,13 +1,22 @@
 .picker-window {
-       display: block;
-       padding: 10px;
-       margin: 20px 0;
-       background-color: rgba(0,0,0,.3);
-       color: #fff;
-       border-radius: 3px;
+       display: inline-block;
+       padding: 16px;
+       margin: 20px;
+       background-color: var(--color-main-background);
+       color: var(--color-main-text);
+       border-radius: var(--border-radius-large);
+       box-shadow: 0 0 10px var(--color-box-shadow);
        cursor: default;
 }
 
+.picker-window.small {
+    max-width: 400px;
+}
+
+.picker-window h2 {
+    margin: 20px auto;
+}
+
 .apptoken-link {
        margin: 20px;
        display: block;
index c97c05edf8dca62c539c91eadcfd4a7f52894b17..b539a32c2fef7fa731aa05f1e2f63e899f7d3e1e 100644 (file)
@@ -380,12 +380,11 @@ body {
   margin-top: 8px;
   padding: 5px;
   border-radius: var(--border-radius);
-  color: var(--color-primary-text);
-  background-color: var(--color-warning);
+  color: var(--color-main-text);
+  background-color: rgba(var(--color-warning-rgb), 0.2);
 }
 
 .warning legend, .warning a {
-  color: var(--color-primary-text) !important;
   font-weight: bold !important;
 }
 
@@ -1339,7 +1338,7 @@ textarea:disabled,
 div[contenteditable=true]:disabled,
 .pager li a:disabled {
   background-color: var(--color-background-dark);
-  color: var(--color-text-maxcontrast);
+  color: var(--color-main-text);
   cursor: default;
   opacity: 0.5;
 }
@@ -1352,15 +1351,14 @@ div[contenteditable=true]:required,
 .pager li a:required {
   box-shadow: none;
 }
-div.select2-drop .select2-search input:invalid,
-select:invalid,
-button:not(.button-vue):invalid, .button:invalid,
-input:not([type=range]):invalid,
-textarea:invalid,
-div[contenteditable=true]:invalid,
-.pager li a:invalid {
-  box-shadow: none !important;
-  border-color: var(--color-error);
+div.select2-drop .select2-search input:user-invalid,
+select:user-invalid,
+button:not(.button-vue):user-invalid, .button:user-invalid,
+input:not([type=range]):user-invalid,
+textarea:user-invalid,
+div[contenteditable=true]:user-invalid,
+.pager li a:user-invalid {
+  box-shadow: 0 0 0 2px var(--color-error) !important;
 }
 div.select2-drop .select2-search input.primary,
 select.primary,
index 3d75cb269e0b424aafd0916a18c8c2dfbe4db792..72c0916f37ca2dcced840a974401641e224192aa 100644 (file)
@@ -1 +1,7 @@
-{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/styles/toast.scss","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KFxGe;;;AE2GhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA2DA;;AAzDA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFvvCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA+BA;;AA7BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QA9He;;AAgIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YAjKgB;EAkKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QArPgB;;;AAwPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QArQc;EAsQd,OAtQc;EAuQd;EACA;EACA;;AACA;EACC;ACpOH;EAEA;;AD0OG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAjsBe;AAksBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AHj9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;AAAA;EAGC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAiHA;AA4BA;;AA1IA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAhBD;EACA;EAiBC;EACA,KLsBc;EKrBd;AAMA;AAqBA;;AAzBA;AAAA;EACC;;AAID;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EAGC;EACA;EA3CF;EACA;;AAkDG;AAAA;AAAA;EACC;EACA;EACA,QAhDuB;EAiDvB;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLnHY;EKoHZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAIA;EACC;;AAGA;EACC;;AAID;EACC;;AAID;EACC;;;AAKH;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA,OLlMe;EKmMf,QLnMe;EKoMf;EACA;;;AAGD;EACC;EACA;AAAY;EACZ;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;AACA;AAAA;AAAA;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAoB;;;AAItB;EACC;;AACA;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA,WL9Te;EK+Tf;AAyFA;AAiCA;AAwBA;AAgBA;;AAhKA;EACC;EACA;EACA;EACA;EACA;AAiBA;AA4BA;AAQA;AAcA;AACA;AAQA;;AA1EA;EACC;EACA;EACA;EACA;EACA,OL7Ua;EK8Ub;EACA;EACA;EAEA;EACA;EACA;;AAID;AAAA;AAAA;EAGC;EACA;;AAID;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;EAEC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;AAAA;EAEC;EAEA;;AAID;EACC;;AAMD;AACC;AASA;AAOA;AAOA;;AAtBA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;EACC;EACA;EACA;AAAa;;AAId;AAAA;EAGC;;AAID;EACC;;AAMH;AACC;AASA;AAOA;;AAfA;AAAA;AAAA;AAAA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ACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;AAgBA;;AAbC;AAAA;AAAA;EAEC;;AAKD;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACI;EACA;EACA;EAEH;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AA+CA;;AA7CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9UF;EAEA;EE8UE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;;AAIA;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AF9YF;EAEA;;AE+YE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EAEA,aNzfe;EM0ff;;;AAGD;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;AACA;AAIA;AAKA;;AARA;EACC,aN9gBiB;;AMihBlB;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WN/iBmB;EMgjBnB,WN/iBmB;EMgjBnB;EACA;EACA;EACA,KNtjBe;EMujBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAIF;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;;;AAIF;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAqIA;;AAnIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA5FkB;EA6FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA0CA;AAkBA;AAIA;AAAA;AAMA;AAwBA;AAKA;;AAjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc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AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;ACvzCF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KTuCa;IStCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC7KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AC1IJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;AAAA;EACC;EACA;EACA;EAEA;EACA;EACA;;AAIF;AAAA;EAEC,QADS;EAET;EACA;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;EACC;;AAID;EACC;;AAID;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;AAGE;AACC;;AACA;EACC;;;AC9HJ;AAyCC;AAKA;AAoBA;;AA/DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAID;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QA1Ec;EA2Ed;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
\ No newline at end of file
+<<<<<<< HEAD
+{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/styles/toast.scss","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KFxGe;;;AE2GhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA2DA;;AAzDA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFvvCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA+BA;;AA7BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QA9He;;AAgIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YAjKgB;EAkKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QArPgB;;;AAwPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QArQc;EAsQd,OAtQc;EAuQd;EACA;EACA;;AACA;EACC;ACpOH;EAEA;;AD0OG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAjsBe;AAksBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AHj9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;AAAA;EAGC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAiHA;AA4BA;;AA1IA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAhBD;EACA;EAiBC;EACA,KLsBc;EKrBd;AAMA;AAqBA;;AAzBA;AAAA;EACC;;AAID;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EAGC;EACA;EA3CF;EACA;;AAkDG;AAAA;AAAA;EACC;EACA;EACA,QAhDuB;EAiDvB;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLnHY;EKoHZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAIA;EACC;;AAGA;EACC;;AAID;EACC;;AAID;EACC;;;AAKH;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA,OLlMe;EKmMf,QLnMe;EKoMf;EACA;;;AAGD;EACC;EACA;AAAY;EACZ;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;AACA;AAAA;AAAA;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAoB;;;AAItB;EACC;;AACA;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA,WL9Te;EK+Tf;AAyFA;AAiCA;AAwBA;AAgBA;;AAhKA;EACC;EACA;EACA;EACA;EACA;AAiBA;AA4BA;AAQA;AAcA;AACA;AAQA;;AA1EA;EACC;EACA;EACA;EACA;EACA,OL7Ua;EK8Ub;EACA;EACA;EAEA;EACA;EACA;;AAID;AAAA;AAAA;EAGC;EACA;;AAID;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;EAEC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;AAAA;EAEC;EAEA;;AAID;EACC;;AAMD;AACC;AASA;AAOA;AAOA;;AAtBA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;EACC;EACA;EACA;AAAa;;AAId;AAAA;EAGC;;AAID;EACC;;AAMH;AACC;AASA;AAOA;;AAfA;AAAA;AAAA;AAAA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ACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;AAgBA;;AAbC;AAAA;AAAA;EAEC;;AAKD;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACI;EACA;EACA;EAEH;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AA+CA;;AA7CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9UF;EAEA;EE8UE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;;AAIA;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AF9YF;EAEA;;AE+YE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EAEA,aNzfe;EM0ff;;;AAGD;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;AACA;AAIA;AAKA;;AARA;EACC,aN9gBiB;;AMihBlB;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WN/iBmB;EMgjBnB,WN/iBmB;EMgjBnB;EACA;EACA;EACA,KNtjBe;EMujBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAIF;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;;;AAIF;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAqIA;;AAnIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA5FkB;EA6FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA0CA;AAkBA;AAIA;AAAA;AAMA;AAwBA;AAKA;;AAjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc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AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;ACvzCF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KTuCa;IStCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC7KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AC1IJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;AAAA;EACC;EACA;EACA;EAEA;EACA;EACA;;AAIF;AAAA;EAEC,QADS;EAET;EACA;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;EACC;;AAID;EACC;;AAID;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;AAGE;AACC;;AACA;EACC;;;AC9HJ;AAyCC;AAKA;AAoBA;;AA/DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAID;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QA1Ec;EA2Ed;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
+||||||| parent of 36e13d41ed (Redesign guest pages for better accessibility)
+{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/styles/toast.scss","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KFxGe;;;AE2GhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA2DA;;AAzDA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFvvCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA+BA;;AA7BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QA9He;;AAgIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YAjKgB;EAkKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QArPgB;;;AAwPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QArQc;EAsQd,OAtQc;EAuQd;EACA;EACA;;AACA;EACC;ACpOH;EAEA;;AD0OG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAjsBe;AAksBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AHj9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;AAAA;EAGC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAiHA;AA4BA;;AA1IA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAhBD;EACA;EAiBC;EACA,KLsBc;EKrBd;AAMA;AAqBA;;AAzBA;AAAA;EACC;;AAID;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EAGC;EACA;EA3CF;EACA;;AAkDG;AAAA;AAAA;EACC;EACA;EACA,QAhDuB;EAiDvB;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLnHY;EKoHZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAIA;EACC;;AAGA;EACC;;AAID;EACC;;AAID;EACC;;;AAKH;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA,OLlMe;EKmMf,QLnMe;EKoMf;EACA;;;AAGD;EACC;EACA;AAAY;EACZ;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;AACA;AAAA;AAAA;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAoB;;;AAItB;EACC;;AACA;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA,WL9Te;EK+Tf;AAyFA;AAiCA;AAwBA;AAgBA;;AAhKA;EACC;EACA;EACA;EACA;EACA;AAiBA;AA4BA;AAQA;AAcA;AACA;AAQA;;AA1EA;EACC;EACA;EACA;EACA;EACA,OL7Ua;EK8Ub;EACA;EACA;EAEA;EACA;EACA;;AAID;AAAA;AAAA;EAGC;EACA;;AAID;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;EAEC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;AAAA;EAEC;EAEA;;AAID;EACC;;AAMD;AACC;AASA;AAOA;AAOA;;AAtBA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;EACC;EACA;EACA;AAAa;;AAId;AAAA;EAGC;;AAID;EACC;;AAMH;AACC;AASA;AAOA;;AAfA;AAAA;AAAA;AAAA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ACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;AAgBA;;AAbC;AAAA;AAAA;EAEC;;AAKD;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACI;EACA;EACA;EAEH;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AA+CA;;AA7CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9UF;EAEA;EE8UE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;;AAIA;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AF9YF;EAEA;;AE+YE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EAEA,aNzfe;EM0ff;;;AAGD;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;AACA;AAIA;AAKA;;AARA;EACC,aN9gBiB;;AMihBlB;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WN/iBmB;EMgjBnB,WN/iBmB;EMgjBnB;EACA;EACA;EACA,KNtjBe;EMujBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAIF;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;;;AAIF;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAqIA;;AAnIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA5FkB;EA6FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA0CA;AAkBA;AAIA;AAAA;AAMA;AAwBA;AAKA;;AAjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc;EACd;EACA;EACA,iBAhHe;;AAkHhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEC;AAAA;EAEA;;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,aA/He;;AAmIlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OA1Ke;EA2Kf;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;AACA;AAAA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,WA7MiB;EA8MjB;AAA0C;EAC1C;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAMD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKJ;AAAA;AAAA;EACC;;AACA;AAAA;AAAA;EACC;;;AAOJ;AAAA;AAOG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGC;AAAA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OA/PgB;EAgQhB,QAhQgB;;;AAuQrB;AACA;EACC;EACA;EACA,KN5hCe;EM6hCf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WNliCgB;EMmiChB,WNliCgB;AMoiChB;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AAGC;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIF;AAAA;AAAA;AAAA;EACC;;AAKH;EAGC;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;ACvzCF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KTuCa;IStCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC7KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AC1IJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EAEC,QADS;EAET;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;EACC;;AAID;EACC;;AAID;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;AAGE;AACC;;AACA;EACC;;;AC3GJ;AAyCC;AAKA;AAoBA;;AA/DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAID;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QA1Ec;EA2Ed;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
+=======
+{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/styles/toast.scss","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KFxGe;;;AE2GhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA2DA;;AAzDA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFtvCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAKD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QA7He;;AA+HhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA,YAhKgB;EAiKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAKD;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;;AAEC;EAGC;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QApPgB;;;AAuPjB;AAEC;AAsBC;;AAnBA;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QApQc;EAqQd,OArQc;EAsQd;EACA;EACA;;AACA;EACC;ACnOH;EAEA;;ADyOG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAQL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;AAiHA;;AAhHA;AACC;;AACA;EACC;EACA;;AAGF;EAEC;;AAED;AACC;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAhsBe;AAisBf;AAoDA;AASA;AAaA;;AAzEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;AASA;;AAPA;EACC;AACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAAA;EAEA;EACA;EACA;EACA;AACA;AAAA;AAQA;AAAA;;AANA;EACC;;AAED;EACC,cAnDa;;AAuDd;EACC;EACA;EACA;;AAKH;EACC;EACA;EACA;AAAY;EACZ;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA,cAhFe;AAiFf;EACA;;AAGD;EACC;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;AACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAiBA;AAAA;AAAA;;AAhBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAMA;EACC;EACA;;AAGF;EACC;;AAED;EACC;;AAIA;EACC;;;AAQN;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AHh9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;AAAA;EAGC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAiHA;AA4BA;;AA1IA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAhBD;EACA;EAiBC;EACA,KLsBc;EKrBd;AAMA;AAqBA;;AAzBA;AAAA;EACC;;AAID;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EAGC;EACA;EA3CF;EACA;;AAkDG;AAAA;AAAA;EACC;EACA;EACA,QAhDuB;EAiDvB;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLnHY;EKoHZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAIA;EACC;;AAGA;EACC;;AAID;EACC;;AAID;EACC;;;AAKH;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;;;AAGD;AACA;EACC;EACA,OLlMe;EKmMf,QLnMe;EKoMf;EACA;;;AAGD;EACC;EACA;AAAY;EACZ;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;AACA;AAAA;AAAA;AACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAoB;;;AAItB;EACC;;AACA;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA,WL9Te;EK+Tf;AAyFA;AAiCA;AAwBA;AAgBA;;AAhKA;EACC;EACA;EACA;EACA;EACA;AAiBA;AA4BA;AAQA;AAcA;AACA;AAQA;;AA1EA;EACC;EACA;EACA;EACA;EACA,OL7Ua;EK8Ub;EACA;EACA;EAEA;EACA;EACA;;AAID;AAAA;AAAA;EAGC;EACA;;AAID;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;;AAID;AAAA;EAEC;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;AAAA;EAEC;EAEA;;AAID;EACC;;AAMD;AACC;AASA;AAOA;AAOA;;AAtBA;AAAA;AAAA;AAAA;AAAA;EAKC;;AAID;EACC;EACA;EACA;AAAa;;AAId;AAAA;EAGC;;AAID;EACC;;AAMH;AACC;AASA;AAOA;;AAfA;AAAA;AAAA;AAAA;AAAA;EAKC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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;AAgBA;;AAbC;AAAA;AAAA;EAEC;;AAKD;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACI;EACA;EACA;EAEH;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AA+CA;;AA7CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9UF;EAEA;EE8UE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;;AAIA;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AF9YF;EAEA;;AE+YE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EAEA,aNzfe;EM0ff;;;AAGD;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;AACA;AAIA;AAKA;;AARA;EACC,aN9gBiB;;AMihBlB;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WN/iBmB;EMgjBnB,WN/iBmB;EMgjBnB;EACA;EACA;EACA,KNtjBe;EMujBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAIF;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;;;AAIF;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAqIA;;AAnIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA5FkB;EA6FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA0CA;AAkBA;AAIA;AAAA;AAMA;AAwBA;AAKA;;AAjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc;EACd;EACA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EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;ACvzCF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KTuCa;IStCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC7KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AC1IJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EAEC,QADS;EAET;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;EACC;;AAID;EACC;;AAID;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;AAGE;AACC;;AACA;EACC;;;AC3GJ;AAyCC;AAKA;AAoBA;;AA/DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAID;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QA1Ec;EA2Ed;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
+>>>>>>> 36e13d41ed (Redesign guest pages for better accessibility)
index 4f7681fc0534b05754800ab380ad1af8390f7552..9350a0ead4ea886146ddf4dfe5b7f712cfe2b4e1 100644 (file)
@@ -379,12 +379,11 @@ body {
   margin-top: 8px;
   padding: 5px;
   border-radius: var(--border-radius);
-  color: var(--color-primary-text);
-  background-color: var(--color-warning);
+  color: var(--color-main-text);
+  background-color: rgba(var(--color-warning-rgb), 0.2);
 }
 
 .warning legend, .warning a {
-  color: var(--color-primary-text) !important;
   font-weight: bold !important;
 }
 
index 3105d163945db8bda8676e8ab618c09a5c7169fc..65e3fd34976169a3b6a75178ecd3e536c2c0e5b8 100644 (file)
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["variables.scss","styles.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KDxGe;;;AC2GhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA2DA;;AAzDA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA","file":"styles.css"}
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["variables.scss","styles.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA,KDxGe;;;AC2GhB;AAEA;EACC;;;AAGD;EACC;;;AAMC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAKH;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;AA2DA;;AAzDA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA","file":"styles.css"}
\ No newline at end of file
index a3bdf5b6fc46e0aab7c12a3ff4a5c4d927fffaff..430fed90e2c57f2beb8575c9d7fb4cbb8397bf30 100644 (file)
@@ -365,13 +365,12 @@ body {
        margin-top: 8px;
        padding: 5px;
        border-radius: var(--border-radius);
-       color: var(--color-primary-text);
-       background-color: var(--color-warning);
+       color: var(--color-main-text);
+       background-color: rgba(var(--color-warning-rgb), 0.2);
 }
 
 .warning {
        legend, a {
-               color: var(--color-primary-text) !important;
                font-weight: bold !important;
        }
 }
index e99398ba09a9659cf765ccb5b203b1b399ab5f44..0b9afd58685863ec1bc948c6d4d609fa237c9182 100644 (file)
   -->
 
 <template>
-       <div class="submit-wrapper" @click="$emit('click')">
-               <input type="submit"
-                       class="submit-wrapper__input primary"
-                       title=""
-                       :value="!loading ? value : valueLoading">
-               <div v-if="loading" class="submit-wrapper__icon icon-loading-small-dark" />
-               <ArrowRight v-else class="submit-wrapper__icon" />
-       </div>
+       <Button type="primary"
+               native-type="submit"
+               :wide="true"
+               @click="$emit('click')">
+               {{ !loading ? value : valueLoading }}
+               <template #icon>
+                       <div v-if="loading" class="submit-wrapper__icon icon-loading-small-dark" />
+                       <ArrowRight v-else class="submit-wrapper__icon" />
+               </template>
+       </Button>
 </template>
 
 <script>
+import Button from '@nextcloud/vue/dist/Components/Button'
 import ArrowRight from 'vue-material-design-icons/ArrowRight.vue'
 
 export default {
        name: 'LoginButton',
        components: {
                ArrowRight,
+               Button,
        },
        props: {
                value: {
@@ -58,37 +62,3 @@ export default {
        },
 }
 </script>
-
-<style scoped lang="scss">
-.submit-wrapper {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    padding: 10px 5px;
-    position: relative;
-       margin: 0 auto;
-
-       &__input {
-               width: 260px;
-               height: 50px;
-       }
-
-       &__icon {
-               display: flex;
-               position: absolute;
-               right: 24px;
-               transition: right 100ms ease-in-out;
-               /* The submit icon is positioned on the submit button.
-               From the user point of view the icon is part of the
-               button, so the clicks on the icon have to be
-               applied to the button instead. */
-               pointer-events: none;
-       }
-
-       &__input:hover + &__icon:not(.icon-loading-small-dark),
-       &__input:focus + &__icon:not(.icon-loading-small-dark),
-       &__input:active + &__icon:not(.icon-loading-small-dark) {
-               right: 20px;
-       }
-}
-</style>
index 7a499baa2f0c9949fa2b703d6b294ba893987faf..aadf7863dfe37aceb04680df1bcbf9ababf17f15 100644 (file)
                                <LoginButton :value="t('core', 'Reset password')" />
                        </div>
                        <p v-if="message === 'send-success'"
-                               class="update">
+                               class="notecard success">
                                {{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}
                                <br>
                                {{ t('core', 'If it is not there ask your local administrator.') }}
                        </p>
                        <p v-else-if="message === 'send-error'"
-                               class="update warning">
+                               class="notecard error">
                                {{ t('core', 'Couldn\'t send reset email. Please contact your administrator.') }}
                        </p>
                        <p v-else-if="message === 'reset-error'"
-                               class="update warning">
+                               class="notecard error">
                                {{ t('core', 'Password cannot be changed. Please contact your administrator.') }}
                        </p>
-                       <p v-else-if="message"
-                               class="update"
-                               :class="{warning: error}" />
 
                        <a href="#"
                                @click.prevent="$emit('abort')">
diff --git a/core/src/components/setup/InstallButton.vue b/core/src/components/setup/InstallButton.vue
deleted file mode 100644 (file)
index 52d2d62..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--
-  - @copyright 2022 Christopher Ng <chrng8@gmail.com>
-  -
-  - @author Christopher Ng <chrng8@gmail.com>
-  -
-  - @license GNU AGPL version 3 or any later version
-  -
-  - This program is free software: you can redistribute it and/or modify
-  - it under the terms of the GNU Affero General Public License as
-  - published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
-  -
-  - You should have received a copy of the GNU Affero General Public License
-  - along with this program. If not, see <http://www.gnu.org/licenses/>.
-  -
--->
-
-<template>
-       <button class="primary"
-               :autofocus="true"
-               v-on="$listeners">
-               {{ t('core', 'Install recommended apps') }}
-       </button>
-</template>
-
-<script>
-export default {
-       name: 'InstallButton',
-}
-</script>
-
-<style lang="scss" scoped>
-       button {
-               margin: 24px auto 10px auto;
-               padding: 10px 20px;
-               font-size: 20px;
-       }
-</style>
index cd39929f14bf210f1dd32bb58c1c135472b0d8aa..5bd5bb0bbae9018c027ba5c984723d63ce9048fc 100644 (file)
@@ -20,7 +20,7 @@
   -->
 
 <template>
-       <div class="body-login-container">
+       <div class="guest-box">
                <h2>{{ t('core', 'Recommended apps') }}</h2>
                <p v-if="loadingApps" class="loading text-center">
                        {{ t('core', 'Loading apps …') }}
                        </div>
                </div>
 
-               <InstallButton v-if="showInstallButton"
-                       @click.stop.prevent="installApps" />
-
-               <p class="text-center">
-                       <a :href="defaultPageUrl">{{ t('core', 'Cancel') }}</a>
-               </p>
+               <div class="dialog-row">
+                       <Button v-if="showInstallButton"
+                               type="tertiary"
+                               role="link"
+                               href="defaultPageUrl"
+                               @click="goTo(defaultPageUrl)">
+                               {{ t('core', 'Cancel') }}
+                       </Button>
+
+                       <Button v-if="showInstallButton"
+                               type="primary"
+                               @click.stop.prevent="installApps">
+                               {{ t('core', 'Install recommended apps') }}
+                       </Button>
+               </div>
        </div>
 </template>
 
@@ -69,8 +78,7 @@ import { loadState } from '@nextcloud/initial-state'
 import pLimit from 'p-limit'
 import { translate as t } from '@nextcloud/l10n'
 
-// TODO replace with Button component when @nextcloud/vue is upgraded to v5
-import InstallButton from './InstallButton'
+import Button from '@nextcloud/vue/dist/Components/Button'
 
 import logger from '../../logger'
 
@@ -106,7 +114,7 @@ const defaultPageUrl = loadState('core', 'defaultPageUrl')
 export default {
        name: 'RecommendedApps',
        components: {
-               InstallButton,
+               Button,
        },
        data() {
                return {
@@ -184,13 +192,18 @@ export default {
                        }
                        return recommended[appId].description
                },
+               goTo(href) {
+                       window.location.href = href
+               },
        },
 }
 </script>
 
 <style lang="scss" scoped>
-.body-login-container {
-
+.dialog-row {
+       display: flex;
+       justify-content: end;
+       margin-top: 8px;
 }
 
 p {
@@ -215,7 +228,7 @@ p {
        img {
                height: 50px;
                width: 50px;
-               filter: invert(1);
+               filter: var(--background-invert-if-dark);
        }
 
        img, .info {
@@ -228,7 +241,6 @@ p {
                }
 
                h3 {
-                       color: #fff;
                        margin-top: 0;
                }
 
index 51358e6f70d3fbd098b6b66275a87c62dca94429..6dbae452d3131cd7dc55bf9b05f35c70780ad4c5 100644 (file)
@@ -95,14 +95,13 @@ window.addEventListener('DOMContentLoaded', function() {
                $('.float-spinner').show(250)
 
                // Disable inputs
-               $(':submit', this).attr('disabled', 'disabled').val($(':submit', this).data('finishing'))
+               $('input[type="submit"]').attr('disabled', 'disabled').val($('input[type="submit"]').data('finishing'))
                $('input', this).addClass('ui-state-disabled').attr('disabled', 'disabled')
                // only disable buttons if they are present
                if ($('#selectDbType').find('.ui-button').length > 0) {
                        $('#selectDbType').buttonset('disable')
                }
                $('.strengthify-wrapper, .tipsy')
-                       .css('-ms-filter', '"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"')
                        .css('filter', 'alpha(opacity=30)')
                        .css('opacity', 0.3)
 
@@ -165,5 +164,13 @@ window.addEventListener('DOMContentLoaded', function() {
        })
 
        $('#dbpass').showPassword().keyup()
-       $('#adminpass').showPassword().keyup()
+       $('.toggle-password').click(function(event) {
+               event.preventDefault()
+               const currentValue = $(this).parent().children('input').attr('type')
+               if (currentValue === 'password') {
+                       $(this).parent().children('input').attr('type', 'text')
+               } else {
+                       $(this).parent().children('input').attr('type', 'password')
+               }
+       })
 })
index e2ca484126c8092aee47d628ff939cc6805bf199..262c9e2973f73e8fd676e3f75905d7328626156b 100644 (file)
   -->
 
 <template>
-       <div v-if="!hideLoginForm || directLogin">
-               <transition name="fade" mode="out-in">
-                       <div v-if="!passwordlessLogin && !resetPassword && resetPasswordTarget === ''"
-                               key="login">
-                               <LoginForm :username.sync="user"
-                                       :redirect-url="redirectUrl"
-                                       :direct-login="directLogin"
-                                       :messages="messages"
-                                       :errors="errors"
-                                       :throttle-delay="throttleDelay"
-                                       :auto-complete-allowed="autoCompleteAllowed"
-                                       @submit="loading = true" />
-                               <a v-if="canResetPassword && resetPasswordLink !== ''"
-                                       id="lost-password"
-                                       :href="resetPasswordLink">
-                                       {{ t('core', 'Forgot password?') }}
-                               </a>
-                               <a v-else-if="canResetPassword && !resetPassword"
-                                       id="lost-password"
-                                       :href="resetPasswordLink"
-                                       @click.prevent="resetPassword = true">
-                                       {{ t('core', 'Forgot password?') }}
-                               </a>
-                               <br>
-                               <template v-if="hasPasswordless">
-                                       <div v-if="countAlternativeLogins"
-                                               class="alternative-logins">
-                                               <a v-if="hasPasswordless"
-                                                       class="button"
-                                                       :class="{ 'single-alt-login-option': countAlternativeLogins }"
+       <div id="login" class="guest-box">
+               <div v-if="!hideLoginForm || directLogin">
+                       <transition name="fade" mode="out-in">
+                               <div v-if="!passwordlessLogin && !resetPassword && resetPasswordTarget === ''">
+                                       <LoginForm :username.sync="user"
+                                               :redirect-url="redirectUrl"
+                                               :direct-login="directLogin"
+                                               :messages="messages"
+                                               :errors="errors"
+                                               :throttle-delay="throttleDelay"
+                                               :auto-complete-allowed="autoCompleteAllowed"
+                                               @submit="loading = true" />
+                                       <a v-if="canResetPassword && resetPasswordLink !== ''"
+                                               id="lost-password"
+                                               :href="resetPasswordLink">
+                                               {{ t('core', 'Forgot password?') }}
+                                       </a>
+                                       <a v-else-if="canResetPassword && !resetPassword"
+                                               id="lost-password"
+                                               :href="resetPasswordLink"
+                                               @click.prevent="resetPassword = true">
+                                               {{ t('core', 'Forgot password?') }}
+                                       </a>
+                                       <br>
+                                       <template v-if="hasPasswordless">
+                                               <div v-if="countAlternativeLogins"
+                                                       class="alternative-logins">
+                                                       <a v-if="hasPasswordless"
+                                                               class="button"
+                                                               :class="{ 'single-alt-login-option': countAlternativeLogins }"
+                                                               href="#"
+                                                               @click.prevent="passwordlessLogin = true">
+                                                               {{ t('core', 'Log in with a device') }}
+                                                       </a>
+                                               </div>
+                                               <a v-else
                                                        href="#"
                                                        @click.prevent="passwordlessLogin = true">
                                                        {{ t('core', 'Log in with a device') }}
                                                </a>
-                                       </div>
-                                       <a v-else
-                                               href="#"
-                                               @click.prevent="passwordlessLogin = true">
-                                               {{ t('core', 'Log in with a device') }}
+                                       </template>
+                               </div>
+                               <div v-else-if="!loading && passwordlessLogin"
+                                       key="reset"
+                                       class="login-additional">
+                                       <PasswordLessLoginForm :username.sync="user"
+                                               :redirect-url="redirectUrl"
+                                               :auto-complete-allowed="autoCompleteAllowed"
+                                               :is-https="isHttps"
+                                               :is-localhost="isLocalhost"
+                                               :has-public-key-credential="hasPublicKeyCredential"
+                                               @submit="loading = true" />
+                                       <a href="#" @click.prevent="passwordlessLogin = false">
+                                               {{ t('core', 'Back') }}
                                        </a>
-                               </template>
-                       </div>
-                       <div v-else-if="!loading && passwordlessLogin"
-                               key="reset"
-                               class="login-additional">
-                               <PasswordLessLoginForm :username.sync="user"
-                                       :redirect-url="redirectUrl"
-                                       :auto-complete-allowed="autoCompleteAllowed"
-                                       :is-https="isHttps"
-                                       :is-localhost="isLocalhost"
-                                       :has-public-key-credential="hasPublicKeyCredential"
-                                       @submit="loading = true" />
-                               <a href="#" @click.prevent="passwordlessLogin = false">
-                                       {{ t('core', 'Back') }}
-                               </a>
-                       </div>
-                       <div v-else-if="!loading && canResetPassword"
-                               key="reset"
-                               class="login-additional">
-                               <div class="lost-password-container">
-                                       <ResetPassword v-if="resetPassword"
-                                               :username.sync="user"
-                                               :reset-password-link="resetPasswordLink"
-                                               @abort="resetPassword = false" />
                                </div>
-                       </div>
-                       <div v-else-if="resetPasswordTarget !== ''">
-                               <UpdatePassword :username.sync="user"
-                                       :reset-password-target="resetPasswordTarget"
-                                       @done="passwordResetFinished" />
-                       </div>
-               </transition>
-       </div>
-       <div v-else>
-               <transition name="fade" mode="out-in">
-                       <div class="warning">
-                               {{ t('core', 'Login form is disabled.') }}<br>
-                               <small>{{ t('core', 'Please contact your administrator.') }}
-                               </small>
-                       </div>
-               </transition>
+                               <div v-else-if="!loading && canResetPassword"
+                                       key="reset"
+                                       class="login-additional">
+                                       <div class="lost-password-container">
+                                               <ResetPassword v-if="resetPassword"
+                                                       :username.sync="user"
+                                                       :reset-password-link="resetPasswordLink"
+                                                       @abort="resetPassword = false" />
+                                       </div>
+                               </div>
+                               <div v-else-if="resetPasswordTarget !== ''">
+                                       <UpdatePassword :username.sync="user"
+                                               :reset-password-target="resetPasswordTarget"
+                                               @done="passwordResetFinished" />
+                               </div>
+                       </transition>
+               </div>
+               <div v-else>
+                       <transition name="fade" mode="out-in">
+                               <div class="warning">
+                                       {{ t('core', 'Login form is disabled.') }}<br>
+                                       <small>
+                                               {{ t('core', 'Please contact your administrator.') }}
+                                       </small>
+                               </div>
+                       </transition>
+               </div>
+
+               <div id="alternative-logins" class="alternative-logins">
+                       <Button v-for="(alternativeLogin, index) in alternativeLogins"
+                               :key="index"
+                               type="primary"
+                               :wide="true"
+                               :class="[alternativeLogin.class]"
+                               role="link"
+                               :href="alternativeLogin.href"
+                               @click="goTo(alternativeLogin.href)">
+                               {{ alternativeLogin.name }}
+                       </Button>
+               </div>
        </div>
 </template>
 
@@ -112,6 +127,7 @@ import LoginForm from '../components/login/LoginForm.vue'
 import PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'
 import ResetPassword from '../components/login/ResetPassword.vue'
 import UpdatePassword from '../components/login/UpdatePassword.vue'
+import Button from '@nextcloud/vue/dist/Components/Button'
 
 const query = queryString.parse(location.search)
 if (query.clear === '1') {
@@ -132,6 +148,7 @@ export default {
                PasswordLessLoginForm,
                ResetPassword,
                UpdatePassword,
+               Button,
        },
 
        data() {
@@ -154,6 +171,7 @@ export default {
                        directLogin: query.direct === '1',
                        hasPasswordless: loadState('core', 'webauthn-available', false),
                        countAlternativeLogins: loadState('core', 'countAlternativeLogins', false),
+                       alternativeLogins: loadState('core', 'alternativeLogins', []),
                        isHttps: window.location.protocol === 'https:',
                        isLocalhost: window.location.hostname === 'localhost',
                        hasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',
@@ -166,15 +184,36 @@ export default {
                        this.resetPasswordTarget = ''
                        this.directLogin = true
                },
+               goTo(href) {
+                       window.location.href = href
+               },
        },
 }
 </script>
 
-<style>
+<style lang="scss">
        .fade-enter-active, .fade-leave-active {
                transition: opacity .3s;
        }
        .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
                opacity: 0;
        }
+
+       #lost-password {
+               padding: 4px;
+               margin: 8px;
+               border-radius: var(--border-radius);
+       }
+
+       .alternative-logins button {
+               margin-top: 12px;
+               margin-bottom: 12px;
+               &:first-child {
+                       margin-top: 0;
+               }
+
+               &:last-child {
+                       margin-bottom: 0;
+               }
+       }
 </style>
index 1ee3569ed03453900453912c853f349d69857d1f..d41d6cd3083d27cc1731fe6b2e1921cbab3d4173 100644 (file)
@@ -9,11 +9,9 @@ if (!isset($_)) {//standalone  page is not supported anymore - redirect to /
 }
 // @codeCoverageIgnoreEnd
 ?>
-<ul>
-       <li class='error'>
-               <?php p($l->t('Access forbidden')); ?><br>
+<div class="guest-box">
+       <h2><?php p($l->t('Access forbidden')); ?></h2>
                <p class='hint'><?php if (isset($_['message'])) {
        p($_['message']);
 }?></p>
-       </li>
 </ul>
index 867d5d8a1d361543a18653f4862fca278a71be93..30d03507654fa707db9ec69d868c1d7115c929c9 100644 (file)
@@ -17,7 +17,7 @@ if (!isset($_)) { //standalone  page is not supported anymore - redirect to /
        <?php print_unescaped($_['content']) ?>
 <?php else : ?>
        <div class="body-login-container update">
-               <div class="icon-big icon-error icon-white"></div>
+               <div class="icon-big icon-error"></div>
                <h2><?php p($l->t('Profile not found')); ?></h2>
                <p class="infogroup"><?php p($l->t('The profile does not exist.')); ?></p>
                <p><a class="button primary" href="<?php p(\OC::$server->getURLGenerator()->linkTo('', 'index.php')) ?>">
index 10c49f34b6cc9eb9876091136e8bcbe03abda0ea..64595c9a092a345929f7eb02dd915b63b44e771c 100644 (file)
@@ -16,7 +16,7 @@ if (!isset($_)) {//standalone  page is not supported anymore - redirect to /
        <?php print_unescaped($_['content']) ?>
 <?php else: ?>
        <div class="body-login-container update">
-               <div class="icon-big icon-search icon-white"></div>
+               <div class="icon-big icon-search"></div>
                <h2><?php p($l->t('File not found')); ?></h2>
                <p class="infogroup"><?php p($l->t('The document could not be found on the server. Maybe the share was deleted or has expired?')); ?></p>
                <p><a class="button primary" href="<?php p(\OC::$server->getURLGenerator()->linkTo('', 'index.php')) ?>">
index c6f7706edc1dc7d9a321e4c7768f7e1c9de80e10..2e5488ae8dbcacd0adecfd74a5b4429eacf8188d 100644 (file)
@@ -1,4 +1,4 @@
-<div class="error">
+<div class="guest-box">
        <h2><?php p($l->t('Error')) ?></h2>
        <ul>
        <?php foreach ($_["errors"] as $error):?>
index c8a26220092b80310633e1e4659d9699c421459f..d26e9ff4f94ed420b26c3fe3f7d4469d835dd06c 100644 (file)
@@ -20,7 +20,7 @@ function print_exception(Throwable $e, \OCP\IL10N $l): void {
 }
 
 ?>
-<div class="error error-wide">
+<div class="guest-box wide">
        <h2><?php p($l->t('Internal Server Error')) ?></h2>
        <p><?php p($l->t('The server was unable to complete your request.')) ?></p>
        <p><?php p($l->t('If this happens again, please send the technical details below to the server administrator.')) ?></p>
index 0137466c9f178b274686fbf422383047438fd350..b08f1cd9ac12d879c954a484d2ca6497c52000ac 100644 (file)
@@ -5,7 +5,7 @@ script('core', 'install');
 <input type='hidden' id='hasSQLite' value='<?php p($_['hasSQLite']) ?>'>
 <input type='hidden' id='hasPostgreSQL' value='<?php p($_['hasPostgreSQL']) ?>'>
 <input type='hidden' id='hasOracle' value='<?php p($_['hasOracle']) ?>'>
-<form action="index.php" method="post">
+<form action="index.php" method="post" class="guest-box">
 <input type="hidden" name="install" value="true">
        <?php if (count($_['errors']) > 0): ?>
        <fieldset class="warning">
@@ -47,14 +47,15 @@ script('core', 'install');
                                value="<?php p($_['adminpass']); ?>"
                                autocomplete="off" autocapitalize="none" autocorrect="off" required>
                        <label for="adminpass" class="infield"><?php p($l->t('Password')); ?></label>
-                       <input type="checkbox" id="show" class="hidden-visually" name="show" aria-label="<?php p($l->t('Show password')); ?>">
-                       <label for="show"></label>
+                       <button id="show" class="toggle-password" aria-label="<?php p($l->t('Show password')); ?>">
+                               <img src="<?php print_unescaped(image_path('', 'actions/toggle.svg')); ?>" alt="<?php p($l->t('Toggle password visibility')); ?>">
+                       </button>
                </p>
        </fieldset>
 
        <?php if (!$_['directoryIsSet'] or !$_['dbIsSet'] or count($_['errors']) > 0): ?>
        <fieldset id="advancedHeader">
-               <legend><a id="showAdvanced" tabindex="0" href="#"><?php p($l->t('Storage & database')); ?><img src="<?php print_unescaped(image_path('', 'actions/caret-white.svg')); ?>" /></a></legend>
+               <legend><a id="showAdvanced" tabindex="0" href="#"><?php p($l->t('Storage & database')); ?><img src="<?php print_unescaped(image_path('', 'actions/caret.svg')); ?>" /></a></legend>
        </fieldset>
        <?php endif; ?>
 
@@ -108,13 +109,14 @@ script('core', 'install');
                                        autocomplete="off" autocapitalize="none" autocorrect="off">
                        </p>
                        <p class="groupmiddle">
-                               <input type="password" name="dbpass" id="dbpass" data-typetoggle="#dbpassword-toggle"
+                               <input type="password" name="dbpass" id="dbpass"
                                        placeholder="<?php p($l->t('Database password')); ?>"
                                        value="<?php p($_['dbpass']); ?>"
                                        autocomplete="off" autocapitalize="none" autocorrect="off">
                                <label for="dbpass" class="infield"><?php p($l->t('Database password')); ?></label>
-                               <input type="checkbox" id="dbpassword-toggle" class="hidden-visually" name="dbpassword-toggle" aria-label="<?php p($l->t('Show password')); ?>">
-                               <label for="dbpassword-toggle"></label>
+                               <button id="show" class="toggle-password" aria-label="<?php p($l->t('Show password')); ?>">
+                                       <img src="<?php print_unescaped(image_path('', 'actions/toggle.svg')); ?>" alt="<?php p($l->t('Toggle password visibility')); ?>">
+                               </button>
                        </p>
                        <p class="groupmiddle">
                                <label for="dbname" class="infield"><?php p($l->t('Database name')); ?></label>
@@ -151,7 +153,7 @@ script('core', 'install');
        <?php endif; ?>
 
        <?php if (!$_['dbIsSet'] or count($_['errors']) > 0): ?>
-               <fieldset id="sqliteInformation" class="warning">
+               <fieldset id="sqliteInformation" class="notecard warning">
                        <legend><?php p($l->t('Performance warning'));?></legend>
                        <p><?php p($l->t('You chose SQLite as database.'));?></p>
                        <p><?php p($l->t('SQLite should only be used for minimal and development instances. For production we recommend a different database backend.'));?></p>
index 743d14b13308351622cbf35afd3da369d2cb2b4b..4cb4d9c057c242d99039bee6994dba260df7dddd 100644 (file)
@@ -1,6 +1,6 @@
-<div class="error">
+<div class="guest-box">
        <h2><?php p($l->t('Error')) ?></h2>
-       <p>
+       <p class="text-left">
                <?php p($l->t('It looks like you are trying to reinstall your Nextcloud. However the file CAN_INSTALL is missing from your config directory. Please create the file CAN_INSTALL in your config folder to continue.')) ?>
        </p>
 </div>
index 867f637d701e110c68ff3f49f5cff8d4034b5303..fbceb10780c01d55a1764701ae7e43ac6e5debcb 100644 (file)
@@ -1,6 +1,6 @@
-<div class="error">
+<div class="guest-box">
        <h2><?php p($l->t('Error')) ?></h2>
-       <p>
+       <p class="text-left">
                <?php p($l->t('Could not remove CAN_INSTALL from the config folder. Please remove this file manually.')) ?>
        </p>
 </div>
index 6b4b92852405924ea071eea74c33894fa204286e..58da839fbbaf16574ada39ea7c601ee4ca37c18e 100644 (file)
@@ -3,14 +3,6 @@
 script('core', 'login');
 ?>
 
-<div id="login"></div>
-
-<?php if (!empty($_['alt_login'])) { ?>
-    <div id="alternative-logins" class="alternative-logins">
-        <?php foreach ($_['alt_login'] as $login): ?>
-            <a class="button <?php p($login['style'] ?? ''); ?>" href="<?php print_unescaped($login['href']); ?>" >
-                <?php p($login['name']); ?>
-            </a>
-        <?php endforeach; ?>
-    </div>
-<?php } ?>
+<div>
+       <div id="login"></div>
+</div>
index a7d4faa67bf18f3cb9b8f3d8aae3930049d4953a..4e06af943480a25a9982345a130dd1af1b54bd16 100644 (file)
@@ -36,12 +36,12 @@ $urlGenerator = $_['urlGenerator'];
                ])) ?>
        </p>
 
-       <span class="warning">
+       <div class="notecard warning">
                <h3><?php p($l->t('Security warning')) ?></h3>
                <p>
                        <?php p($l->t('If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.')) ?>
                </p>
-       </span>
+       </div>
 
        <br/>
 
index 04fdced1c62b37e5a9d7e0af21a58531aa418a59..6e09be17eeb9b536e91a402019505cebdef9ae29 100644 (file)
@@ -27,7 +27,7 @@ style('core', 'login/authpicker');
 $urlGenerator = $_['urlGenerator'];
 ?>
 
-<div class="picker-window">
+<div class="picker-window small">
        <h2><?php p($l->t('Account access')) ?></h2>
        <p class="info">
                <?php p($l->t('Currently logged in as %1$s (%2$s).', [
index 8caa42f2ce80e8d774610568877d60388a226cf0..53730e5b1ac4c55cc9ecaf418cba08eb5d3052be 100644 (file)
@@ -36,19 +36,19 @@ $urlGenerator = $_['urlGenerator'];
                ])) ?>
        </p>
 
-       <span class="warning">
+       <div class="notecard warning">
                <h3><?php p($l->t('Security warning')) ?></h3>
                <p>
                        <?php p($l->t('If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.')) ?>
                </p>
-       </span>
+       </div>
 
        <br/>
 
        <p id="redirect-link">
-               <a href="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLoginV2.grantPage', ['stateToken' => $_['stateToken'], 'user' => $_['user']])) ?>">
+               <form action="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLoginV2.grantPage', ['stateToken' => $_['stateToken'], 'user' => $_['user']])) ?>" method="get">
                        <input type="submit" class="login primary icon-confirm-white" value="<?php p($l->t('Log in')) ?>">
-               </a>
+               </form>
        </p>
 
        <form action="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLoginV2.apptokenRedirect')); ?>" method="post" id="app-token-login-field" class="hidden">
index 19005a20e2c1a00925ded62e74825736cf659f86..567c3b4e7760efa307bfb7a47c2fedf19a8fb985 100644 (file)
@@ -27,7 +27,7 @@ style('core', 'login/authpicker');
 $urlGenerator = $_['urlGenerator'];
 ?>
 
-<div class="picker-window">
+<div class="picker-window small">
        <h2><?php p($l->t('Account access')) ?></h2>
        <p class="info">
                <?php p($l->t('Currently logged in as %1$s (%2$s).', [
index 449216bb6f65f4be28659e5c50c3c5fe040e1754..4af292b2dc537f04c00047e46a81c3ebf5009505 100644 (file)
@@ -1,80 +1,82 @@
 <?php
        /** @var array $_ */
        /** @var \OCP\IL10N $l */
-       style('core', 'guest');
-       style('core', 'publicshareauth');
-       script('core', 'publicshareauth');
+       \OCP\Util::addStyle('core', 'guest');
+       \OCP\Util::addStyle('core', 'publicshareauth');
+       \OCP\Util::addScript('core', 'publicshareauth');
 ?>
 
-<!-- password prompt form. It should be hidden when we show the email prompt form -->
-<?php if (!isset($_['identityOk'])): ?>
-       <form method="post" id="password-input-form">
-<?php else: ?>
-       <form method="post" id="password-input-form" style="display:none;">
-<?php endif; ?>
-       <fieldset class="warning">
-               <?php if (!isset($_['wrongpw'])): ?>
-                       <div class="warning-info"><?php p($l->t('This share is password-protected')); ?></div>
-               <?php endif; ?>
-               <?php if (isset($_['wrongpw'])): ?>
-                       <div class="warning wrongPasswordMsg"><?php p($l->t('The password is wrong or expired. Please try again or request a new one.')); ?></div>
-               <?php endif; ?>
-               <p>
-                       <label for="password" class="infield"><?php p($l->t('Password')); ?></label>
-                       <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
-                       <input type="password" name="password" id="password"
-                               placeholder="<?php p($l->t('Password')); ?>" value=""
-                               autocomplete="new-password" autocapitalize="off" autocorrect="off"
-                               autofocus />
-                       <input type="hidden" name="sharingToken" value="<?php p($_['share']->getToken()) ?>" id="sharingToken">
-                       <input type="hidden" name="sharingType" value="<?php p($_['share']->getShareType()) ?>" id="sharingType">
-                       <input type="submit" id="password-submit"
-                               class="svg icon-confirm input-button-inline" value="" disabled="disabled" />
-               </p>
-       </fieldset>
-</form>
-
-<!-- email prompt form. It should initially be hidden -->
-<?php if (isset($_['identityOk'])): ?>
-       <form method="post" id="email-input-form">
-<?php else: ?>
-       <form method="post" id="email-input-form" style="display:none;">
-<?php endif; ?>
-       <fieldset class="warning">
-               <div class="warning-info" id="email-prompt"><?php p($l->t('Please type in your email address to request a temporary password')); ?></div>
-                <p>
-                       <input type="email" id="email" name="identityToken" placeholder="<?php p($l->t('Email address')); ?>" />
-                       <input type="submit" id="password-request" name="passwordRequest" class="svg icon-confirm input-button-inline" value="" disabled="disabled"/>
-                       <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
-                       <input type="hidden" name="sharingToken" value="<?php p($_['share']->getToken()) ?>" id="sharingToken">
-                       <input type="hidden" name="sharingType" value="<?php p($_['share']->getShareType()) ?>" id="sharingType">
-               </p>
-               <?php if (isset($_['identityOk'])): ?>
-                       <?php if ($_['identityOk']): ?>
-                               <div class="warning-info" id="identification-success"><?php p($l->t('Password sent!')); ?></div>
-                       <?php else: ?>
-                               <div class="warning" id="identification-failure"><?php p($l->t('You are not authorized to request a password for this share')); ?></div>
+<div class="guest-box">
+       <!-- password prompt form. It should be hidden when we show the email prompt form -->
+       <?php if (!isset($_['identityOk'])): ?>
+               <form method="post" id="password-input-form">
+       <?php else: ?>
+               <form method="post" id="password-input-form" style="display:none;">
+       <?php endif; ?>
+               <fieldset class="warning">
+                       <?php if (!isset($_['wrongpw'])): ?>
+                               <div class="warning-info"><?php p($l->t('This share is password-protected')); ?></div>
                        <?php endif; ?>
-               <?php endif; ?>
-       </fieldset>
-</form>
-
-<!-- request password button -->
-<?php if (!isset($_['identityOk']) && $_['share']->getShareType() === $_['share']::TYPE_EMAIL && !$_['share']->getSendPasswordByTalk()): ?>
-       <a id="request-password-button-not-talk"><?php p($l->t('Forgot password?')); ?></a>
-<?php endif; ?>
-
-<!-- back to showShare button -->
-<form method="get">
-       <fieldset>
-               <a
-                       href=""
-                       id="request-password-back-button"
-<?php if (isset($_['identityOk'])): ?>
-                       style="display:block;">
-<?php else: ?>
-                       style="display:none;">
-<?php endif; ?>
-                       <?php p($l->t('Back')); ?></a>
-       </fieldset>
-</form>
+                       <?php if (isset($_['wrongpw'])): ?>
+                               <div class="warning wrongPasswordMsg"><?php p($l->t('The password is wrong or expired. Please try again or request a new one.')); ?></div>
+                       <?php endif; ?>
+                       <p>
+                               <label for="password" class="infield"><?php p($l->t('Password')); ?></label>
+                               <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
+                               <input type="password" name="password" id="password"
+                                       placeholder="<?php p($l->t('Password')); ?>" value=""
+                                       autocomplete="new-password" autocapitalize="off" autocorrect="off"
+                                       autofocus />
+                               <input type="hidden" name="sharingToken" value="<?php p($_['share']->getToken()) ?>" id="sharingToken">
+                               <input type="hidden" name="sharingType" value="<?php p($_['share']->getShareType()) ?>" id="sharingType">
+                               <input type="submit" id="password-submit"
+                                       class="svg icon-confirm input-button-inline" value="" disabled="disabled" />
+                       </p>
+               </fieldset>
+       </form>
+       
+       <!-- email prompt form. It should initially be hidden -->
+       <?php if (isset($_['identityOk'])): ?>
+               <form method="post" id="email-input-form">
+       <?php else: ?>
+               <form method="post" id="email-input-form" style="display:none;">
+       <?php endif; ?>
+               <fieldset class="warning">
+                       <div class="warning-info" id="email-prompt"><?php p($l->t('Please type in your email address to request a temporary password')); ?></div>
+                        <p>
+                               <input type="email" id="email" name="identityToken" placeholder="<?php p($l->t('Email address')); ?>" />
+                               <input type="submit" id="password-request" name="passwordRequest" class="svg icon-confirm input-button-inline" value="" disabled="disabled"/>
+                               <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
+                               <input type="hidden" name="sharingToken" value="<?php p($_['share']->getToken()) ?>" id="sharingToken">
+                               <input type="hidden" name="sharingType" value="<?php p($_['share']->getShareType()) ?>" id="sharingType">
+                       </p>
+                       <?php if (isset($_['identityOk'])): ?>
+                               <?php if ($_['identityOk']): ?>
+                                       <div class="warning-info" id="identification-success"><?php p($l->t('Password sent!')); ?></div>
+                               <?php else: ?>
+                                       <div class="warning" id="identification-failure"><?php p($l->t('You are not authorized to request a password for this share')); ?></div>
+                               <?php endif; ?>
+                       <?php endif; ?>
+               </fieldset>
+       </form>
+       
+       <!-- request password button -->
+       <?php if (!isset($_['identityOk']) && $_['share']->getShareType() === $_['share']::TYPE_EMAIL && !$_['share']->getSendPasswordByTalk()): ?>
+               <a id="request-password-button-not-talk"><?php p($l->t('Forgot password?')); ?></a>
+       <?php endif; ?>
+       
+       <!-- back to showShare button -->
+       <form method="get">
+               <fieldset>
+                       <a
+                               href=""
+                               id="request-password-back-button"
+       <?php if (isset($_['identityOk'])): ?>
+                               style="display:block;">
+       <?php else: ?>
+                               style="display:none;">
+       <?php endif; ?>
+                               <?php p($l->t('Back')); ?></a>
+               </fieldset>
+       </form>
+</div>
index b285a7296bf25ace7d3875c72606f7be6d196d0e..daa6229c4c7f6d47c78ed778f101614d46ff2e45 100644 (file)
@@ -1,4 +1,4 @@
-<div class="update" data-productname="<?php p($_['productName']) ?>" data-version="<?php p($_['version']) ?>">
+<div class="guest-box update" data-productname="<?php p($_['productName']) ?>" data-version="<?php p($_['version']) ?>">
        <div class="updateOverview">
                <?php if ($_['isAppsOnlyUpgrade']) { ?>
                <h2 class="title"><?php p($l->t('App update required')); ?></h2>
@@ -7,7 +7,7 @@
                        [$_['productName'], $_['version']])); ?></h2>
                <?php } ?>
                <?php if (!empty($_['appsToUpgrade'])) { ?>
-               <div class="infogroup">
+               <div class="text-left">
                        <span><?php p($l->t('The following apps will be updated:')); ?></span>
                        <ul class="content appList">
                                <?php foreach ($_['appsToUpgrade'] as $appInfo) { ?>
@@ -17,7 +17,7 @@
                </div>
                <?php } ?>
                <?php if (!empty($_['incompatibleAppsList'])) { ?>
-               <div class="infogroup">
+               <div class="text-left">
                        <span><?php p($l->t('These incompatible apps will be disabled:')) ?></span>
                        <ul class="content appList">
                                <?php foreach ($_['incompatibleAppsList'] as $appInfo) { ?>
                        <?php p($l->t('The theme %s has been disabled.', [$_['oldTheme']])) ?>
                </div>
                <?php } ?>
-               <div class="infogroup bold">
+               <div class="text-left margin-top bold">
                        <?php p($l->t('Please make sure that the database, the config folder and the data folder have been backed up before proceeding.')) ?>
                </div>
-               <input class="updateButton primary" type="button" value="<?php p($l->t('Start update')) ?>">
-               <div class="infogroup">
-                       <em>
+               <input class="updateButton primary margin-top" type="button" value="<?php p($l->t('Start update')) ?>">
+               <div class="notecard warning">
                        <?php p($l->t('To avoid timeouts with larger installations, you can instead run the following command from your installation directory:')) ?>
                        <pre>./occ upgrade</pre>
-                       </em>
                </div>
        </div>
 
index 6e6d19483dbe154f6a6a6016d5d30d22ff4d1d37..66cce4e521fb8083fa06da4ab23ff5e301126de9 100644 (file)
@@ -1,23 +1,21 @@
-<div class="update" data-productname="<?php p($_['productName']) ?>" data-version="<?php p($_['version']) ?>">
+<div class="guest-box update" data-productname="<?php p($_['productName']) ?>" data-version="<?php p($_['version']) ?>">
        <div class="updateOverview">
                <h2 class="title"><?php p($l->t('Update needed')) ?></h2>
-               <div class="infogroup">
+               <div class="text-left">
                        <?php if ($_['tooBig']) {
        p($l->t('Please use the command line updater because you have a big instance with more than 50 users.'));
 } else {
        p($l->t('Please use the command line updater because automatic updating is disabled in the config.php.'));
 } ?><br><br>
                        <?php
-                       print_unescaped($l->t('For help, see the  <a target="_blank" rel="noreferrer noopener" href="%s">documentation</a>.', [link_to_docs('admin-cli-upgrade')])); ?><br><br>
+                       print_unescaped($l->t('For help, see the  <a target="_blank" rel="noreferrer noopener" href="%s">documentation</a>.', [link_to_docs('admin-cli-upgrade')])); ?>
                </div>
        </div>
 
        <?php if ($_['tooBig']) { ?>
-               <div class="warning updateAnyways">
+               <div class="notecard warning">
                        <p><?php p($l->t('I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure.')); ?></p>
-                       <a href="?IKnowThatThisIsABigInstanceAndTheUpdateRequestCouldRunIntoATimeoutAndHowToRestoreABackup=IAmSuperSureToDoThis" class="button updateAnywaysButton"><?php p($l->t('Upgrade via web on my own risk')); ?></a>
+                       <a class="button error margin-top" href="?IKnowThatThisIsABigInstanceAndTheUpdateRequestCouldRunIntoATimeoutAndHowToRestoreABackup=IAmSuperSureToDoThis"><?php p($l->t('Upgrade via web on my own risk')); ?></a>
                </div>
        <?php } ?>
-
-
 </div>
index 2c6ffd4344468857712434b538b8565cea09da74..1cb527bb9c890a76fc9883ace570dfd5703c9ace 100644 (file)
@@ -1,5 +1,5 @@
-<div class="body-login-container">
-       <div class="icon-big icon-error-white"></div>
+<div class="guest-box">
+       <div class="icon-big icon-error"></div>
        <h2><?php p($l->t('Maintenance mode', [$theme->getName()])) ?></h2>
        <p><?php p($l->t('This %s instance is currently in maintenance mode, which may take a while.', [$theme->getName()])) ?> <?php p($l->t('This page will refresh itself when the instance is available again.')) ?></p>
        <p><?php p($l->t('Contact your system administrator if this message persists or appeared unexpectedly.')) ?></p>
index 3a369410b82a3b77f6cb382464901cd72375483d..a502004c71a9e28516b9df84c5a2cb8d27e0bd6e 100644 (file)
@@ -1,3 +1,3 @@
 /*! For license information please see core-install.js.LICENSE.txt */
-!function(){"use strict";var e,t={84891:function(e,t,n){var r,o,a,i,s=n(19755),d=n.n(s),l=n(9944),c=n(74854),u=(r=document,o=c.emit,a=r.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return a},setToken:function(e){o("csrf-token-update",{token:a=e})}}).getToken;d().fn.extend({showPassword:function(e){var t={fn:null,args:{}};t.fn=e;var n=function(e,t){t.val(e.val())},r=function(e,t,r){e.is(":checked")?(n(t,r),r.show(),t.hide()):(n(r,t),r.hide(),t.show())};return this.each((function(){var e=d()(this),o=d()(e.data("typetoggle")),a=function(e){var t=d()(e),n=d()("<input />");return n.attr({type:"text",class:t.attr("class"),style:t.attr("style"),size:t.attr("size"),name:t.attr("name")+"-clone",tabindex:t.attr("tabindex"),autocomplete:"off"}),void 0!==t.attr("placeholder")&&n.attr("placeholder",t.attr("placeholder")),n}(e);a.insertAfter(e),t.fn&&(t.args.input=e,t.args.checkbox=o,t.args.clone=a),o.bind("click",(function(){r(o,e,a)})),e.bind("keyup",(function(){n(e,a)})),a.bind("keyup",(function(){n(a,e),e.trigger("keyup")})),a.bind("blur",(function(){e.trigger("focusout")})),r(o,e,a),a.closest("form").submit((function(e){a.prop("type","password")})),t.fn&&t.fn(t.args)}))}}),n(79366),n(75289),n(56396),n(33824),d().prototype.tooltip=(i=d().prototype.tooltip,function(e){try{return i.call(this,e)}catch(t){if(t instanceof TypeError&&"destroy"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),i.call(this,"dispose");if(t instanceof TypeError&&"fixTitle"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),i.call(this,"_fixTitle")}}),n(99205),n(38554),window.addEventListener("DOMContentLoaded",(function(){var e=!!d()("#hasSQLite").val();d()("#hasMySQL").val(),d()("#hasPostgreSQL").val(),d()("#hasOracle").val(),d()("#selectDbType").buttonset(),d()("#selectDbType p.info a").button("destroy"),d()("#hasSQLite").val()?(d()("#use_other_db").hide(),d()("#use_oracle_db").hide()):d()("#sqliteInformation").hide(),d()("#adminlogin").change((function(){d()("#adminlogin").val(d().trim(d()("#adminlogin").val()))})),d()("#sqlite").click((function(){d()("#use_other_db").slideUp(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").show(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#mysql,#pgsql").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#oci").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").show(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-.]+")})),d()("#showAdvanced").click((function(e){e.preventDefault(),d()("#datadirContent").slideToggle(250),d()("#databaseBackend").slideToggle(250),d()("#databaseField").slideToggle(250)})),d()("form").submit((function(){var e=d()(this).serializeArray();d()(".float-spinner").show(250),d()(":submit",this).attr("disabled","disabled").val(d()(":submit",this).data("finishing")),d()("input",this).addClass("ui-state-disabled").attr("disabled","disabled"),d()("#selectDbType").find(".ui-button").length>0&&d()("#selectDbType").buttonset("disable"),d()(".strengthify-wrapper, .tipsy").css("-ms-filter",'"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"').css("filter","alpha(opacity=30)").css("opacity",.3);var t=d()("<form>");t.attr("action",d()(this).attr("action")),t.attr("method","POST");for(var n=0;n<e.length;n++){var r=d()('<input type="hidden">');r.attr(e[n]),t.append(r)}var o=decodeURIComponent((new RegExp("[?|&]redirect_url=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||"";if(o){var a=d()('<input type="hidden">');a.attr({name:"redirect_url",value:o}),t.append(a)}return t.appendTo(document.body),t.submit(),!1}));var t=d()('input[type="radio"]:checked').val();void 0===t&&d()('input[type="radio"]').first().click(),("sqlite"===t||e&&void 0===t)&&(d()("#datadirContent").hide(250),d()("#databaseBackend").hide(250),d()("#databaseField").hide(250),d()(".float-spinner").hide(250)),d()("#adminpass").strengthify({zxcvbn:OC.linkTo("core","vendor/zxcvbn/dist/zxcvbn.js"),titles:[(0,l.translate)("core","Very weak password"),(0,l.translate)("core","Weak password"),(0,l.translate)("core","So-so password"),(0,l.translate)("core","Good password"),(0,l.translate)("core","Strong password")],drawTitles:!0,nonce:btoa(u())}),d()("#dbpass").showPassword().keyup(),d()("#adminpass").showPassword().keyup()}))}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=t,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,a){if(!n){var i=1/0;for(c=0;c<e.length;c++){n=e[c][0],o=e[c][1],a=e[c][2];for(var s=!0,d=0;d<n.length;d++)(!1&a||i>=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[d])}))?n.splice(d--,1):(s=!1,a<i&&(i=a));if(s){e.splice(c--,1);var l=o();void 0!==l&&(t=l)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[n,o,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=8998,function(){r.b=document.baseURI||self.location.href;var e={8998:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,a,i=n[0],s=n[1],d=n[2],l=0;if(i.some((function(t){return 0!==e[t]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(d)var c=d(r)}for(t&&t(n);l<i.length;l++)a=i[l],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),r.nc=void 0;var o=r.O(void 0,[7874],(function(){return r(84891)}));o=r.O(o)}();
-//# sourceMappingURL=core-install.js.map?v=ee580b4e58a4177adf85
\ No newline at end of file
+!function(){"use strict";var e,t={84891:function(e,t,n){var r,o,a,i,s=n(19755),d=n.n(s),l=n(9944),c=n(74854),u=(r=document,o=c.emit,a=r.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return a},setToken:function(e){o("csrf-token-update",{token:a=e})}}).getToken;d().fn.extend({showPassword:function(e){var t={fn:null,args:{}};t.fn=e;var n=function(e,t){t.val(e.val())},r=function(e,t,r){e.is(":checked")?(n(t,r),r.show(),t.hide()):(n(r,t),r.hide(),t.show())};return this.each((function(){var e=d()(this),o=d()(e.data("typetoggle")),a=function(e){var t=d()(e),n=d()("<input />");return n.attr({type:"text",class:t.attr("class"),style:t.attr("style"),size:t.attr("size"),name:t.attr("name")+"-clone",tabindex:t.attr("tabindex"),autocomplete:"off"}),void 0!==t.attr("placeholder")&&n.attr("placeholder",t.attr("placeholder")),n}(e);a.insertAfter(e),t.fn&&(t.args.input=e,t.args.checkbox=o,t.args.clone=a),o.bind("click",(function(){r(o,e,a)})),e.bind("keyup",(function(){n(e,a)})),a.bind("keyup",(function(){n(a,e),e.trigger("keyup")})),a.bind("blur",(function(){e.trigger("focusout")})),r(o,e,a),a.closest("form").submit((function(e){a.prop("type","password")})),t.fn&&t.fn(t.args)}))}}),n(79366),n(75289),n(56396),n(33824),d().prototype.tooltip=(i=d().prototype.tooltip,function(e){try{return i.call(this,e)}catch(t){if(t instanceof TypeError&&"destroy"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),i.call(this,"dispose");if(t instanceof TypeError&&"fixTitle"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),i.call(this,"_fixTitle")}}),n(99205),n(38554),window.addEventListener("DOMContentLoaded",(function(){var e=!!d()("#hasSQLite").val();d()("#hasMySQL").val(),d()("#hasPostgreSQL").val(),d()("#hasOracle").val(),d()("#selectDbType").buttonset(),d()("#selectDbType p.info a").button("destroy"),d()("#hasSQLite").val()?(d()("#use_other_db").hide(),d()("#use_oracle_db").hide()):d()("#sqliteInformation").hide(),d()("#adminlogin").change((function(){d()("#adminlogin").val(d().trim(d()("#adminlogin").val()))})),d()("#sqlite").click((function(){d()("#use_other_db").slideUp(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").show(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#mysql,#pgsql").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#oci").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").show(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-.]+")})),d()("#showAdvanced").click((function(e){e.preventDefault(),d()("#datadirContent").slideToggle(250),d()("#databaseBackend").slideToggle(250),d()("#databaseField").slideToggle(250)})),d()("form").submit((function(){var e=d()(this).serializeArray();d()(".float-spinner").show(250),d()('input[type="submit"]').attr("disabled","disabled").val(d()('input[type="submit"]').data("finishing")),d()("input",this).addClass("ui-state-disabled").attr("disabled","disabled"),d()("#selectDbType").find(".ui-button").length>0&&d()("#selectDbType").buttonset("disable"),d()(".strengthify-wrapper, .tipsy").css("filter","alpha(opacity=30)").css("opacity",.3);var t=d()("<form>");t.attr("action",d()(this).attr("action")),t.attr("method","POST");for(var n=0;n<e.length;n++){var r=d()('<input type="hidden">');r.attr(e[n]),t.append(r)}var o=decodeURIComponent((new RegExp("[?|&]redirect_url=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||"";if(o){var a=d()('<input type="hidden">');a.attr({name:"redirect_url",value:o}),t.append(a)}return t.appendTo(document.body),t.submit(),!1}));var t=d()('input[type="radio"]:checked').val();void 0===t&&d()('input[type="radio"]').first().click(),("sqlite"===t||e&&void 0===t)&&(d()("#datadirContent").hide(250),d()("#databaseBackend").hide(250),d()("#databaseField").hide(250),d()(".float-spinner").hide(250)),d()("#adminpass").strengthify({zxcvbn:OC.linkTo("core","vendor/zxcvbn/dist/zxcvbn.js"),titles:[(0,l.translate)("core","Very weak password"),(0,l.translate)("core","Weak password"),(0,l.translate)("core","So-so password"),(0,l.translate)("core","Good password"),(0,l.translate)("core","Strong password")],drawTitles:!0,nonce:btoa(u())}),d()("#dbpass").showPassword().keyup(),d()(".toggle-password").click((function(e){e.preventDefault(),"password"===d()(this).parent().children("input").attr("type")?d()(this).parent().children("input").attr("type","text"):d()(this).parent().children("input").attr("type","password")}))}))}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=t,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,a){if(!n){var i=1/0;for(c=0;c<e.length;c++){n=e[c][0],o=e[c][1],a=e[c][2];for(var s=!0,d=0;d<n.length;d++)(!1&a||i>=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[d])}))?n.splice(d--,1):(s=!1,a<i&&(i=a));if(s){e.splice(c--,1);var l=o();void 0!==l&&(t=l)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[n,o,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=8998,function(){r.b=document.baseURI||self.location.href;var e={8998:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,a,i=n[0],s=n[1],d=n[2],l=0;if(i.some((function(t){return 0!==e[t]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(d)var c=d(r)}for(t&&t(n);l<i.length;l++)a=i[l],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),r.nc=void 0;var o=r.O(void 0,[7874],(function(){return r(84891)}));o=r.O(o)}();
+//# sourceMappingURL=core-install.js.map?v=992620566a053f4e25da
\ No newline at end of file
index 3a26c2702e1c7c0612db23ce1e950212961555d6..70afad8824dbfc7fc83a994d05a612e5cff7023b 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"core-install.js?v=ee580b4e58a4177adf85","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/install.js","webpack:///nextcloud/core/src/Util/get-url-parameter.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Richard Steinmetz <richard@steinmetz.cloud>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { translate as t } from '@nextcloud/l10n'\nimport { getToken } from './OC/requesttoken'\nimport getURLParameter from './Util/get-url-parameter'\n\nimport './jquery/showpassword'\n\nimport 'jquery-ui/ui/widgets/button'\nimport 'jquery-ui/themes/base/theme.css'\nimport 'jquery-ui/themes/base/button.css'\n\nimport 'bootstrap/js/dist/tooltip'\nimport './Polyfill/tooltip'\n\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst dbtypes = {\n\t\tsqlite: !!$('#hasSQLite').val(),\n\t\tmysql: !!$('#hasMySQL').val(),\n\t\tpostgresql: !!$('#hasPostgreSQL').val(),\n\t\toracle: !!$('#hasOracle').val(),\n\t}\n\n\t$('#selectDbType').buttonset()\n\t// change links inside an info box back to their default appearance\n\t$('#selectDbType p.info a').button('destroy')\n\n\tif ($('#hasSQLite').val()) {\n\t\t$('#use_other_db').hide()\n\t\t$('#use_oracle_db').hide()\n\t} else {\n\t\t$('#sqliteInformation').hide()\n\t}\n\t$('#adminlogin').change(function() {\n\t\t$('#adminlogin').val($.trim($('#adminlogin').val()))\n\t})\n\t$('#sqlite').click(function() {\n\t\t$('#use_other_db').slideUp(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').show()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#mysql,#pgsql').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#oci').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').show(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-.]+')\n\t})\n\n\t$('#showAdvanced').click(function(e) {\n\t\te.preventDefault()\n\t\t$('#datadirContent').slideToggle(250)\n\t\t$('#databaseBackend').slideToggle(250)\n\t\t$('#databaseField').slideToggle(250)\n\t})\n\t$('form').submit(function() {\n\t\t// Save form parameters\n\t\tconst post = $(this).serializeArray()\n\n\t\t// Show spinner while finishing setup\n\t\t$('.float-spinner').show(250)\n\n\t\t// Disable inputs\n\t\t$(':submit', this).attr('disabled', 'disabled').val($(':submit', this).data('finishing'))\n\t\t$('input', this).addClass('ui-state-disabled').attr('disabled', 'disabled')\n\t\t// only disable buttons if they are present\n\t\tif ($('#selectDbType').find('.ui-button').length > 0) {\n\t\t\t$('#selectDbType').buttonset('disable')\n\t\t}\n\t\t$('.strengthify-wrapper, .tipsy')\n\t\t\t.css('-ms-filter', '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\"')\n\t\t\t.css('filter', 'alpha(opacity=30)')\n\t\t\t.css('opacity', 0.3)\n\n\t\t// Create the form\n\t\tconst form = $('<form>')\n\t\tform.attr('action', $(this).attr('action'))\n\t\tform.attr('method', 'POST')\n\n\t\tfor (let i = 0; i < post.length; i++) {\n\t\t\tconst input = $('<input type=\"hidden\">')\n\t\t\tinput.attr(post[i])\n\t\t\tform.append(input)\n\t\t}\n\n\t\t// Add redirect_url\n\t\tconst redirectURL = getURLParameter('redirect_url')\n\t\tif (redirectURL) {\n\t\t\tconst redirectURLInput = $('<input type=\"hidden\">')\n\t\t\tredirectURLInput.attr({\n\t\t\t\tname: 'redirect_url',\n\t\t\t\tvalue: redirectURL,\n\t\t\t})\n\t\t\tform.append(redirectURLInput)\n\t\t}\n\n\t\t// Submit the form\n\t\tform.appendTo(document.body)\n\t\tform.submit()\n\t\treturn false\n\t})\n\n\t// Expand latest db settings if page was reloaded on error\n\tconst currentDbType = $('input[type=\"radio\"]:checked').val()\n\n\tif (currentDbType === undefined) {\n\t\t$('input[type=\"radio\"]').first().click()\n\t}\n\n\tif (\n\t\tcurrentDbType === 'sqlite'\n\t\t|| (dbtypes.sqlite && currentDbType === undefined)\n\t) {\n\t\t$('#datadirContent').hide(250)\n\t\t$('#databaseBackend').hide(250)\n\t\t$('#databaseField').hide(250)\n\t\t$('.float-spinner').hide(250)\n\t}\n\n\t$('#adminpass').strengthify({\n\t\tzxcvbn: OC.linkTo('core', 'vendor/zxcvbn/dist/zxcvbn.js'),\n\t\ttitles: [\n\t\t\tt('core', 'Very weak password'),\n\t\t\tt('core', 'Weak password'),\n\t\t\tt('core', 'So-so password'),\n\t\t\tt('core', 'Good password'),\n\t\t\tt('core', 'Strong password'),\n\t\t],\n\t\tdrawTitles: true,\n\t\tnonce: btoa(getToken()),\n\t})\n\n\t$('#dbpass').showPassword().keyup()\n\t$('#adminpass').showPassword().keyup()\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * @param {any} name -\n */\nexport default function getURLParameter(name) {\n\treturn decodeURIComponent(\n\t\t// eslint-disable-next-line no-sparse-arrays\n\t\t(new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ''])[1].replace(/\\+/g, '%20')\n\t) || ''\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8998;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8998: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(84891); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","global","emit","token","tooltip","getToken","document","getElementsByTagName","getAttribute","setToken","newToken","$","showPassword","c","callback","fn","args","update","a","b","val","setState","checkbox","is","show","hide","this","each","$input","$checkbox","data","$clone","element","$element","attr","type","class","style","size","name","tabindex","autocomplete","undefined","cloneElement","insertAfter","input","clone","bind","trigger","closest","submit","e","prop","config","call","ex","TypeError","window","TESTING","console","error","addEventListener","dbtypes","buttonset","button","change","click","slideUp","slideDown","preventDefault","slideToggle","post","serializeArray","addClass","find","length","css","form","i","append","redirectURL","decodeURIComponent","RegExp","exec","location","search","replace","redirectURLInput","value","appendTo","body","currentDbType","first","strengthify","zxcvbn","OC","linkTo","titles","t","drawTitles","nonce","btoa","keyup","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","push","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"core-install.js?v=992620566a053f4e25da","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/install.js","webpack:///nextcloud/core/src/Util/get-url-parameter.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Richard Steinmetz <richard@steinmetz.cloud>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { translate as t } from '@nextcloud/l10n'\nimport { getToken } from './OC/requesttoken'\nimport getURLParameter from './Util/get-url-parameter'\n\nimport './jquery/showpassword'\n\nimport 'jquery-ui/ui/widgets/button'\nimport 'jquery-ui/themes/base/theme.css'\nimport 'jquery-ui/themes/base/button.css'\n\nimport 'bootstrap/js/dist/tooltip'\nimport './Polyfill/tooltip'\n\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst dbtypes = {\n\t\tsqlite: !!$('#hasSQLite').val(),\n\t\tmysql: !!$('#hasMySQL').val(),\n\t\tpostgresql: !!$('#hasPostgreSQL').val(),\n\t\toracle: !!$('#hasOracle').val(),\n\t}\n\n\t$('#selectDbType').buttonset()\n\t// change links inside an info box back to their default appearance\n\t$('#selectDbType p.info a').button('destroy')\n\n\tif ($('#hasSQLite').val()) {\n\t\t$('#use_other_db').hide()\n\t\t$('#use_oracle_db').hide()\n\t} else {\n\t\t$('#sqliteInformation').hide()\n\t}\n\t$('#adminlogin').change(function() {\n\t\t$('#adminlogin').val($.trim($('#adminlogin').val()))\n\t})\n\t$('#sqlite').click(function() {\n\t\t$('#use_other_db').slideUp(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').show()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#mysql,#pgsql').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#oci').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').show(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-.]+')\n\t})\n\n\t$('#showAdvanced').click(function(e) {\n\t\te.preventDefault()\n\t\t$('#datadirContent').slideToggle(250)\n\t\t$('#databaseBackend').slideToggle(250)\n\t\t$('#databaseField').slideToggle(250)\n\t})\n\t$('form').submit(function() {\n\t\t// Save form parameters\n\t\tconst post = $(this).serializeArray()\n\n\t\t// Show spinner while finishing setup\n\t\t$('.float-spinner').show(250)\n\n\t\t// Disable inputs\n\t\t$('input[type=\"submit\"]').attr('disabled', 'disabled').val($('input[type=\"submit\"]').data('finishing'))\n\t\t$('input', this).addClass('ui-state-disabled').attr('disabled', 'disabled')\n\t\t// only disable buttons if they are present\n\t\tif ($('#selectDbType').find('.ui-button').length > 0) {\n\t\t\t$('#selectDbType').buttonset('disable')\n\t\t}\n\t\t$('.strengthify-wrapper, .tipsy')\n\t\t\t.css('filter', 'alpha(opacity=30)')\n\t\t\t.css('opacity', 0.3)\n\n\t\t// Create the form\n\t\tconst form = $('<form>')\n\t\tform.attr('action', $(this).attr('action'))\n\t\tform.attr('method', 'POST')\n\n\t\tfor (let i = 0; i < post.length; i++) {\n\t\t\tconst input = $('<input type=\"hidden\">')\n\t\t\tinput.attr(post[i])\n\t\t\tform.append(input)\n\t\t}\n\n\t\t// Add redirect_url\n\t\tconst redirectURL = getURLParameter('redirect_url')\n\t\tif (redirectURL) {\n\t\t\tconst redirectURLInput = $('<input type=\"hidden\">')\n\t\t\tredirectURLInput.attr({\n\t\t\t\tname: 'redirect_url',\n\t\t\t\tvalue: redirectURL,\n\t\t\t})\n\t\t\tform.append(redirectURLInput)\n\t\t}\n\n\t\t// Submit the form\n\t\tform.appendTo(document.body)\n\t\tform.submit()\n\t\treturn false\n\t})\n\n\t// Expand latest db settings if page was reloaded on error\n\tconst currentDbType = $('input[type=\"radio\"]:checked').val()\n\n\tif (currentDbType === undefined) {\n\t\t$('input[type=\"radio\"]').first().click()\n\t}\n\n\tif (\n\t\tcurrentDbType === 'sqlite'\n\t\t|| (dbtypes.sqlite && currentDbType === undefined)\n\t) {\n\t\t$('#datadirContent').hide(250)\n\t\t$('#databaseBackend').hide(250)\n\t\t$('#databaseField').hide(250)\n\t\t$('.float-spinner').hide(250)\n\t}\n\n\t$('#adminpass').strengthify({\n\t\tzxcvbn: OC.linkTo('core', 'vendor/zxcvbn/dist/zxcvbn.js'),\n\t\ttitles: [\n\t\t\tt('core', 'Very weak password'),\n\t\t\tt('core', 'Weak password'),\n\t\t\tt('core', 'So-so password'),\n\t\t\tt('core', 'Good password'),\n\t\t\tt('core', 'Strong password'),\n\t\t],\n\t\tdrawTitles: true,\n\t\tnonce: btoa(getToken()),\n\t})\n\n\t$('#dbpass').showPassword().keyup()\n\t$('.toggle-password').click(function(event) {\n\t\tevent.preventDefault()\n\t\tconst currentValue = $(this).parent().children('input').attr('type')\n\t\tif (currentValue === 'password') {\n\t\t\t$(this).parent().children('input').attr('type', 'text')\n\t\t} else {\n\t\t\t$(this).parent().children('input').attr('type', 'password')\n\t\t}\n\t})\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * @param {any} name -\n */\nexport default function getURLParameter(name) {\n\treturn decodeURIComponent(\n\t\t// eslint-disable-next-line no-sparse-arrays\n\t\t(new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ''])[1].replace(/\\+/g, '%20')\n\t) || ''\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8998;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8998: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(84891); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","global","emit","token","tooltip","getToken","document","getElementsByTagName","getAttribute","setToken","newToken","$","showPassword","c","callback","fn","args","update","a","b","val","setState","checkbox","is","show","hide","this","each","$input","$checkbox","data","$clone","element","$element","attr","type","class","style","size","name","tabindex","autocomplete","undefined","cloneElement","insertAfter","input","clone","bind","trigger","closest","submit","e","prop","config","call","ex","TypeError","window","TESTING","console","error","addEventListener","dbtypes","buttonset","button","change","click","slideUp","slideDown","preventDefault","slideToggle","post","serializeArray","addClass","find","length","css","form","i","append","redirectURL","decodeURIComponent","RegExp","exec","location","search","replace","redirectURLInput","value","appendTo","body","currentDbType","first","strengthify","zxcvbn","OC","linkTo","titles","t","drawTitles","nonce","btoa","keyup","event","parent","children","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","push","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
index 133fc77fd9e0e442d1b1b73759fd2f6af087212d..17b61533b76aae6bc3a2df1c0d1d853f3f932d87 100644 (file)
@@ -1,3 +1,3 @@
 /*! For license information please see core-login.js.LICENSE.txt */
-!function(){var e,o={40199:function(e,o,r){"use strict";var i=r(20144),a=r(74854),s=r(19755),l=r.n(s),c=r(79753),u={},d=[],p=r(18181),f=r(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){p.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(function(t){return t.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,f.PV)(t,{timeout:f.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||f.TN;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=p.ZP.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!It.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):It.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var w=window.oc_appconfig||{},y={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=r(72316),C=r.n(P),k=r(87240),A={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function x(t,e){if(p.ZP.isArray(t))return p.ZP.map(t,(function(t){return x(t,e)}));var n={href:t.href};return p.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var r=o;o in e&&(r=e[o]),n[r]=t.properties[o]}})),n.id||(n.id=T(n.href)),n}function T(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function O(t){return t>=200&&t<=299}function S(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var r=e[n],i=t[n];r||(console.warn('No matching DAV property for property "'+n),r=n),(p.ZP.isBoolean(i)||p.ZP.isNumber(i))&&(i=""+i),o[r]=i}return o}(n.changed,e.davProperties),o).then((function(t){O(t.status)?p.ZP.isFunction(e.success)&&e.success(n.toJSON()):p.ZP.isFunction(e.error)&&e.error(t)}))}var E=C().noConflict();Object.assign(E,{davCall:function(t,e){var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:p.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=p.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,p.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(O(t.status)){if(p.ZP.isFunction(e.success)){var n=p.ZP.invert(e.davProperties),o=x(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?S(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(r){O(r.status)?S(t,e,n,o):p.ZP.isFunction(e.error)&&e.error(r)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(O(t.status)){if(p.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),r=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&r&&(o.id=T(r)),void e.success(o)}if(207===t.status){var i=p.ZP.invert(e.davProperties);e.success(x(t.body,i))}else e.success(t.body)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var r={type:A[e]||e},i=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?r.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(r.type="PUT")),o.url||(r.url=p.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(r.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==r.type&&(r.processData=!1),"PROPFIND"===r.type||"PROPPATCH"===r.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(p.ZP.isFunction(a)?r.davProperties=a.call(n):r.davProperties=a),r.davProperties=p.ZP.extend(r.davProperties||{},o.davProperties),p.ZP.isUndefined(o.depth)&&(o.depth=i?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(p.ZP.extend(r,o),n);return n.trigger("request",n,l,o),l}}(E)});var L=E,j=r(65358),U=window._oc_config||{},I=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),R=P.Collection.extend({model:I}),F=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new $({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),$=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:r(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),N=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:r(95386),error:r(20421),menu:r(66115),list:r(34083)},_onSearch:p.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(p.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(p.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(p.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new F({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:It.generateUrl("/apps/contacts"),canInstallApp:It.isUserAdmin(),contactsAppMgmtURL:It.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new N({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),It.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=It.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),p.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new R(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var B=M,z=document.getElementsByTagName("head")[0].getAttribute("data-user"),D=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==z&&z;function H(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Y(t,e,n){return e&&H(t.prototype,e),n&&H(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var q={Search:Y((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},K=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function G(t){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G(t)}var V,W,J,Q={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",Q.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",Q.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",Q.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,r){return this.message(t,e,"none",n,o,void 0===r||r)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",Q.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,r,i,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+Q.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),f=l()("<input/>");f.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",i);var h=l()("<label/>").attr("for",c+"-input").text(i+": ");d.append(h),d.append(f),void 0===r&&(r=!1),l()("body").append(d),void 0!==o&&(o=p.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,f.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,f.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:r,buttons:m,close:function(){void 0!==o&&o(!1,f.val())}}),f.focus(),Q.dialogsCounter++}))},filepicker:function(e,n,o,r,i,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),p=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=q.Sharing&&q.Sharing.PublicApp&&q.Sharing.PublicApp.fileList?q.Sharing.PublicApp.fileList.filesClient:It.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(f){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==r&&(r=[]),"string"==typeof r&&(r=[r]),u.$filePicker=f.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:p,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",r).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===i&&(i=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){K(t)&&u._onGridviewChange()})),u._getGridSettings();var h=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),h.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),h.click()}))})),h.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),It.registerMenu(h,u.$filePicker.find(".menu"),(function(){g.tooltip("hide"),g.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=g.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),g.selectRange(0,e)}));var m=u.$filePicker.find(".filenameform"),g=m.find("input[type='text']"),v=m.find("input[type='submit']");g.on("keydown",(function(t){K(t)&&(t.stopImmediatePropagation(),t.preventDefault(),m.submit())})),v.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.submit()}));m.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=g.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(It.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){g.attr("title",t),g.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),g.tooltip("_fixTitle"),g.tooltip("show"),g.addClass("error")}return!1}()){var n=g.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),It.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),g.val(p)}})),g.on("input",(function(t){g.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){K(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){K(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(K(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)}})),u._fillFilePicker(s)}));var w=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var r=u.$filelist.find("tr.filepicker_element_selected").data("entryname");r&&(e+="/"+r)}n(e,t),u.$filePicker.ocdialog("close")}},y=[];a===Q.FILEPICKER_TYPE_CHOOSE?y.push({text:t("core","Choose"),click:function(){w(Q.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===Q.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){y.push({text:t.text,click:function(){w(t.type)},defaultButton:t.defaultButton})})):(a!==Q.FILEPICKER_TYPE_COPY&&a!==Q.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Copy"),click:function(){w(Q.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==Q.FILEPICKER_TYPE_MOVE&&a!==Q.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Move"),click:function(){w(Q.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:i,buttons:y,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,r,i,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+Q.dialogsCounter+"-content",d="#"+u,p=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(p);var f=[];switch(r){case Q.YES_NO_BUTTONS:f=[{text:t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case Q.OK_BUTTON:f[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==i&&i()},defaultButton:!0};break;default:"object"===G(r)&&r.type===Q.YES_NO_BUTTONS&&(f=[{text:r.cancel||t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:r.confirm||t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:r.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){i&&i(!1)},modal:a,buttons:f}),Q.dialogsCounter++})).fail((function(o,r){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:r}))}))},_fileexistsshown:!1,fileexists:function(e,o,r,i){var a=this,s=new(l().Deferred),c=function(t,e,n,o,r){o=Math.round(o),r=Math.round(r);for(var i=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,r),s=i.data,l=a.data,c=e/o,u=n/r,d=Math.ceil(c/2),p=Math.ceil(u/2),f=0;f<r;f++)for(var h=0;h<o;h++){for(var m=4*(h+f*o),g=0,v=0,w=0,y=0,b=0,_=0,P=0,C=(f+.5)*u,k=Math.floor(f*u);k<(f+1)*u;k++)for(var A=Math.abs(C-(k+.5))/p,x=(h+.5)*c,T=A*A,O=Math.floor(h*c);O<(h+1)*c;O++){var S=Math.abs(x-(O+.5))/d,E=Math.sqrt(T+S*S);E>=-1&&E<=1&&(g=2*E*E*E-3*E*E+1)>0&&(P+=g*s[3+(S=4*(O+k*e))],w+=g,s[S+3]<255&&(g=g*s[S+3]/250),y+=g*s[S],b+=g*s[S+1],_+=g*s[S+2],v+=g)}l[m]=y/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/w}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,r)),t.width=o,t.height=r,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,r){var i=n.find(".template").clone().removeClass("template").addClass("conflict"),a=i.find(".original"),s=i.find(".replacement");i.data("data",e),i.find(".filename").text(o.name),a.find(".size").text(It.Util.humanFileSize(o.size)),a.find(".mtime").text(It.Util.formatDate(o.mtime)),r.size&&r.lastModified&&(s.find(".size").text(It.Util.humanFileSize(r.size)),s.find(".mtime").text(It.Util.formatDate(r.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},p=Files.generatePreviewUrl(d);p=p.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+p+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),r=new Image;r.src=o,r.onload=function(){var t,n,o,i,a,s,l,u=(t=r,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),i=Math.min(s,l),a.width=i,a.height=i,a.getContext("2d").drawImage(t,n,o,i,i,0,0,i,i),c(a,i,i,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=It.MimeType.getIconUrl(r.type),s.find(".icon").css("background-image","url("+u+")")}));var f=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+f),s.find("input:checkbox").attr("id","checkbox_replacement_"+f),n.append(i),r.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):r.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),r.size&&r.size>o.size?s.find(".size").css("font-weight","bold"):r.size&&r.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",p="#"+d;if(this._fileexistsshown){var f=l()(p+" .conflicts");u(f,o,r);var h=l()(p+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(p).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),f=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(f),o&&r){var h=f.find(".conflicts");u(h,o,r)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(e),l()(p).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.onContinue(l()(p+" .conflict")),l()(p).ocdialog("close")}}];l()(p).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(p).css("height","auto");var g=f.closest(".oc-dialog").find("button.continue");function v(){var t=f.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(p).find(".allnewfiles").on("click",(function(){l()(p).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".allexistingfiles").on("click",(function(){l()(p).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(p).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(p).on("click",".replacement,.allnewfiles",(function(){var e=l()(p).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allnewfiles").prop("checked",!0),l()(p).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text("")),v()})),l()(p).on("click",".original,.allexistingfiles",(function(){var e=l()(p).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allexistingfiles").prop("checked",!0),l()(p).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(It.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");It.currentUser&&l().post(It.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),l()(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(It.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(It.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(It.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(It.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:function(e){var n=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var o=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter");"string"==typeof o&&(o=[o]),n.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===n.filepicker.sortOrder?n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),n.filepicker.filesClient.getFolderContents(e).then((function(i,a){n.filelist=a,o&&o.length>0&&-1===o.indexOf("*")&&(a=a.filter((function(t){return"dir"===t.type||-1!==o.indexOf(t.mimetype)}))),r&&(a=a.filter(r));var s=document.getElementById("showHiddenFiles");null===s||"1"===s.value||(a=a.filter((function(t){return!t.name.startsWith(".")})));var c={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:It.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}},u=c[n.filepicker.sortField]||c.name;a=a.sort((function(t,e){var o=function(t){return t.tags&&t.tags.indexOf(It.TAG_FAVORITE)>=0};return o(t)&&!o(e)?-1:!o(t)&&o(e)?1:"asc"===n.filepicker.sortOrder?u(t,e):-u(t,e)})),n._fillSlug(),0===a.length?(n.$filePicker.find(".emptycontent").show(),n.$fileListHeader.hide()):(n.$filePicker.find(".emptycontent").hide(),n.$fileListHeader.show()),n.$filelist.empty(),l().each(a,(function(o,r){var i,a;if(r.icon=It.MimeType.getIconUrl(r.mimetype),void 0!==r.size&&r.size>=0?(i=It.Util.humanFileSize(parseInt(r.size,10),!0),a=Math.round(160-Math.pow(r.size/1048576,2))):(i=t("files","Pending"),a=80),r.name.length>=10)var s=Math.min(Math.floor(r.name.length/2),10),c=r.name.substr(0,r.name.length-s),u=r.name.substr(r.name.length-s);else c=r.name,u="";var d=n.$listTmpl.octemplate({type:r.type,dir:e,filename:r.name,filename1:c,filename2:u,date:It.Util.relativeModifiedDate(r.mtime),size:i,sizeColor:a,icon:r.icon});if("file"===r.type){var p={file:e+"/"+r.name,x:100,y:100},f=new Image,h=It.generateUrl("/core/preview.png?")+l().param(p);f.onload=function(){f.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},f.src=h}n.$filelist.append(d)})),n.$filelistContainer.removeClass("icon-loading")}))},_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(n){var r=n.split("/");l().each(r,(function(t,n){if(""===(n=r.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:r.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var r=t.target.closest(".oc-dialog"),i=l()(".primary",r);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),r=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),i=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:i.text(o);break;case this.FILEPICKER_TYPE_MOVE:i.text(r);break;case this.FILEPICKER_TYPE_COPY_MOVE:i.eq(0).text(o),i.eq(1).text(r)}}},X=Q,tt=(V=document,W=a.emit,J=V.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return J},setToken:function(t){W("csrf-token-update",{token:J=t})}}).getToken,et=function t(e,n){var o,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)i+=o+"="+encodeURIComponent(n[o])+"&";if(i+="requesttoken="+encodeURIComponent(tt()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),r="&",-1===e.indexOf("?")&&(r="?"),this.iframe.attr("src",e+r+"fallback=true&fallback_id="+t.iframeCount+"&"+i),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else r="&",-1===e.indexOf("?")&&(r="?"),this.source=new EventSource(e+r+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};et.fallBackSources=[],et.iframeCount=0,et.fallBackCallBack=function(t,e,n){et.fallBackSources[t].fallBackCallBack(e,n)},et.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var nt=et,ot=r(42515),rt=null,it=function(t){if(rt){var e=rt;rt.trigger(new(l().Event)("beforeHide")),rt.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),rt=null},at=!!window._oc_isadmin,st=r(27856),lt=r.n(st),ct=r(86834),ut=r.n(ct),dt=r(46488),pt=r.n(dt),ft=r(95573),ht=r.n(ft);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var mt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},gt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function vt(t){return vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},vt(t)}var wt={load:function(t,e){if(mt(t)||"en"===It.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var r=this,i=(0,c.generateFilePath)(t,"l10n",It.getLocale()+".json");return l().get(i).then((function(e){e.translations&&r.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,r;n=t,o=e,r=this._getPlural,mt(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,r):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,r)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,r){var i=r||{};p.ZP.defaults(i,{escape:!0,sanitize:!0});var a=i.sanitize?lt().sanitize:pt(),s=i.escape?ht():pt(),l=e,c=gt(t).translations[e];return void 0!==c&&(l=c),"object"===vt(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,r,i){var a="_"+e+"_::_"+n+"_",s=gt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],r,o,i)}}return 1===o?this.translate(t,e,r,o,i):this.translate(t,n,r,o,i)},_getPlural:function(t){var e=It.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},yt=wt;ut().registerHelper("t",(function(t,e){return wt.translate(t,e)}));var bt=r(9944),_t={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},Pt=r(30381),Ct=r.n(Pt),kt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",p.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Ct().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Ct().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var r={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},i=p.ZP.extend(r,n),a=this;this.requiresPasswordConfirmation()&&It.dialogs.prompt(i.text,i.title,(function(t,e){t&&""!==e?a._confirmPassword(e,i):p.ZP.isFunction(o)&&o()}),!0,i.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==i.error){var e=l()("<p></p>").addClass("msg warning").text(i.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(i.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,p.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),It.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},At=window._theme||{},xt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:It.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var r,i=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=i.length;a<s;a++)(r=i[a]).style.fill=r.style.fill,r.style.stroke=r.style.stroke,r.removeAttribute("filter"),r.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=It.parseQueryString(this._decodeQuery(e))),(t=p.ZP.extend(t||{},It.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,p.ZP.isString(e)?e=It.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function Tt(t){for(var e,n=[],o=0,r=-1,i=0;o<t.length;){e=t.charAt(o);var a=!i&&"."===e||e>="0"&&e<="9";a!==i&&(n[++r]="",i=a),n[r]+=e,o++}return n}var Ot={History:xt,humanFileSize:r(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ct()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Ct()().diff(Ct()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ct()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=Tt(t),r=Tt(e);for(n=0;o[n]&&r[n];n++)if(o[n]!==r[n]){var i=Number(o[n]),a=Number(r[n]);return i==o[n]&&a==r[n]?i-a:o[n].localeCompare(r[n],It.getLanguage())}return o.length-r.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var r=n[o].split("=");if(r[0].trim()===t&&r[1].trim()===e)return!0}return!1}},St=window._oc_debug,Et=window._oc_webroot;if(void 0===Et){var Lt=(Et=location.pathname).indexOf("/index.php/");Et=-1!==Lt?Et.substr(0,Lt):Et.substr(0,Et.lastIndexOf("/"))}var jt,Ut=Et,It={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(U.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var r=(0,c.generateFilePath)(t,"js",e+".js");return u[r]?n&&n():(o=l().Deferred(),l().getScript(r,(function(){return o.resolve()})),u[r]=o),u[r]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:y,appConfig:w,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var r=l()("#appsettings_popup");if(0===r.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(r=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),r.is(":visible"))r.hide().remove();else{var i=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){r.html(e).ready((function(){if(r.prepend('<span class="arrow '+i+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),r.find(".close").bind("click",(function(){r.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:L,ContactsMenu:B,config:U,currentUser:Z,dialogs:X,EventSource:nt,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return at},L10N:yt,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!It._reloadCalled)&&(p.ZP.contains([302,303,307,401],t.status)&&It.currentUser?setTimeout((function(){if(!It._userIsNavigatingAway&&!It._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),It.reload()),t++}),1e3);It._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){It._userIsNavigatingAway||It._reloadCalled||It._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,ot.getCapabilities)()},hideMenus:it,registerMenu:function(t,e,n,o){e.addClass("menu");var r="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(r?"click.menu":"click.menu keyup.menu",(function(r){r.preventDefault(),r.key&&"Enter"!==r.key||(e.is(rt)?it():(rt&&it(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),rt=e))}))},showMenu:function(t,e,n){e.is(rt)||(it(),rt=e,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),p.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(rt)&&it(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:j.EZ,encodePath:j.Ec,dirname:j.XX,isSamePath:j.Mg,joinPaths:j.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:bt.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:yt.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,r={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var i=t.replace(/\+/g,"%20").split("&"),a=0;a<i.length;a++){var s=i[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(r[o]=n.length>1?decodeURIComponent(n[1]):null)}return r},msg:_t,Notification:h,PasswordConfirmation:kt,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].attach&&o[r].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].detach&&o[r].detach(e,n)}},theme:At,Util:Ot,debug:St,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(jt=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(jt=jt[e[o]]))return!1;return jt[n]}),set:function(t){return function(e,n){for(var o=e.split("."),r=o.pop(),i=0;i<o.length;i++)t[o[i]]||(t[o[i]]={}),t=t[o[i]];return t[r]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:tt(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Ut};(0,a.subscribe)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var Rt=r(16453),Ft=r(17563),$t=r(55586),Nt=r.n($t),Mt=r(1412),Bt=r.n(Mt),zt=r(36765),Dt=r(77883),Zt={name:"LoginButton",components:{ArrowRight:r(73723).default},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Ht=r(93379),Yt=r.n(Ht),qt=r(7795),Kt=r.n(qt),Gt=r(90569),Vt=r.n(Gt),Wt=r(3565),Jt=r.n(Wt),Qt=r(19216),Xt=r.n(Qt),te=r(44589),ee=r.n(te),ne=r(82966),oe={};oe.styleTagTransform=ee(),oe.setAttributes=Jt(),oe.insert=Vt().bind(null,"head"),oe.domAPI=Kt(),oe.insertStyleElement=Xt(),Yt()(ne.Z,oe),ne.Z&&ne.Z.locals&&ne.Z.locals;var re=r(51900),ie=(0,re.Z)(Zt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"submit-wrapper",on:{click:function(e){return t.$emit("click")}}},[n("input",{staticClass:"submit-wrapper__input primary",attrs:{type:"submit",title:""},domProps:{value:t.loading?t.valueLoading:t.value}}),t._v(" "),t.loading?n("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):n("ArrowRight",{staticClass:"submit-wrapper__icon"})],1)}),[],!1,null,"e3d85cce",null).exports,ae={name:"LoginForm",components:{Button:Bt(),Eye:zt.Z,EyeOff:Dt.Z,LoginButton:ie},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:Nt().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,user:this.username,password:"",passwordInputType:"password"}},computed:{apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")},isPasswordHidden:function(){return"password"===this.passwordInputType}},mounted:function(){""===this.username?this.$refs.user.focus():this.$refs.password.focus()},methods:{togglePassword:function(){"password"===this.passwordInputType?this.passwordInputType="text":this.passwordInputType="password"},updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},se=r(66074),le={};le.styleTagTransform=ee(),le.setAttributes=Jt(),le.insert=Vt().bind(null,"head"),le.domAPI=Kt(),le.insertStyleElement=Xt(),Yt()(se.Z,le),se.Z&&se.Z.locals&&se.Z.locals;var ce=(0,re.Z)(ae,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",[t.apacheAuthFailed?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Server side authentication failed!"))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),t._l(t.messages,(function(e,o){return n("div",{key:o,staticClass:"warning"},[t._v("\n\t\t\t"+t._s(e)),n("br")])})),t._v(" "),t.internalException?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","An internal error occurred."))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("p",{staticClass:"grouptop",class:{shake:t.invalidPassword}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocapitalize:"none",autocorrect:"off",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("p",{staticClass:"groupbottom",class:{shake:t.invalidPassword}},[n("input",{ref:"password",staticClass:"password-with-toggle",attrs:{id:"password",type:t.passwordInputType,name:"password",autocorrect:"off",autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",placeholder:t.t("core","Password"),"aria-label":t.t("core","Password"),required:""}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","Password")))]),t._v(" "),n("Button",{staticClass:"toggle-password",attrs:{type:"tertiary-no-background","aria-label":t.isPasswordHidden?t.t("core","Show password"):t.t("core","Hide password")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.togglePassword.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isPasswordHidden?n("Eye",{attrs:{size:20}}):n("EyeOff",{attrs:{size:20}})]},proxy:!0}])})],1),t._v(" "),n("LoginButton",{attrs:{loading:t.loading}}),t._v(" "),t.invalidPassword?n("p",{staticClass:"warning wrongPasswordMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","Wrong username or password."))+"\n\t\t")]):t.userDisabled?n("p",{staticClass:"warning userDisabledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","User disabled"))+"\n\t\t")]):t._e(),t._v(" "),t.throttleDelay&&t.throttleDelay>5e3?n("p",{staticClass:"warning throttledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."))+"\n\t\t")]):t._e(),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],2)])}),[],!1,null,"8c61dc2a",null),ue=ce.exports,de=r(4820),pe=r(85963),fe=r(64150);function he(t){return he="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},he(t)}function me(t){return function(t){if(Array.isArray(t))return ge(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return ge(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ge(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ge(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function ve(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function we(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ve(Object(n),!0).forEach((function(e){ye(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ve(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function ye(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function be(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _e(t,e){if(e&&("object"===he(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Pe(t){var e="function"==typeof Map?new Map:void 0;return Pe=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return Ce(t,arguments,xe(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Ae(o,t)},Pe(t)}function Ce(t,e,n){return Ce=ke()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var r=new(Function.bind.apply(t,o));return n&&Ae(r,n.prototype),r},Ce.apply(null,arguments)}function ke(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Ae(t,e){return Ae=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},Ae(t,e)}function xe(t){return xe=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},xe(t)}var Te=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ae(t,e)}(i,t);var e,n,o,r=(e=i,n=ke(),function(){var t,o=xe(e);if(n){var r=xe(this).constructor;t=Reflect.construct(o,arguments,r)}else t=o.apply(this,arguments);return _e(this,t)});function i(){return be(this,i),r.apply(this,arguments)}return o=i,Object.defineProperty(o,"prototype",{writable:!1}),o}(Pe(Error)),Oe={name:"PasswordLessLoginForm",components:{LoginButton:ie,InformationIcon:pe.Z,LockOpenIcon:fe.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof Te?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),de.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new Te;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return we(we({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,me(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,me(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),de.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){console.debug("Logged in redirecting"),window.location.href=o})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Se=r(2340),Ee={};Ee.styleTagTransform=ee(),Ee.setAttributes=Jt(),Ee.insert=Vt().bind(null,"head"),Ee.domAPI=Kt(),Ee.insertStyleElement=Xt(),Yt()(Se.Z,Ee),Se.Z&&Se.Z.locals&&Se.Z.locals;var Le=(0,re.Z)(Oe,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"adf4afc4",null),je=Le.exports,Ue={name:"ResetPassword",components:{LoginButton:ie},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return de.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},Ie=r(71599),Re={};Re.styleTagTransform=ee(),Re.setAttributes=Jt(),Re.insert=Vt().bind(null,"head"),Re.domAPI=Kt(),Re.insertStyleElement=Xt(),Yt()(Ie.Z,Re),Ie.Z&&Ie.Z.locals&&Ie.Z.locals;var Fe=(0,re.Z)(Ue,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],attrs:{id:"user",type:"text",name:"user",autocapitalize:"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("div",{attrs:{id:"reset-password-wrapper"}},[n("LoginButton",{attrs:{value:t.t("core","Reset password")}})],1),t._v(" "),"send-success"===t.message?n("p",{staticClass:"update"},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("p",{staticClass:"update warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("p",{staticClass:"update warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t.message?n("p",{staticClass:"update",class:{warning:t.error}}):t._e(),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])])])}),[],!1,null,"9caa2c8a",null),$e=Fe.exports;function Ne(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}var Me={name:"UpdatePassword",components:{LoginButton:ie},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,de.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(r=o.data)||"success"!==r.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!r||!r.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!r||!r.msg){e.next=22;break}throw new Error(r.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(t){Ne(i,o,r,a,s,"next",t)}function s(t){Ne(i,o,r,a,s,"throw",t)}a(void 0)}))})()}}},Be=Me,ze=r(52033),De={};De.styleTagTransform=ee(),De.setAttributes=Jt(),De.insert=Vt().bind(null,"head"),De.domAPI=Kt(),De.insertStyleElement=Xt(),Yt()(ze.Z,De),ze.Z&&ze.Z.locals&&ze.Z.locals;var Ze=(0,re.Z)(Be,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,r=!!o.checked;if(Array.isArray(n)){var i=t._i(n,null);o.checked?i<0&&(t.proceed=n.concat([null])):i>-1&&(t.proceed=n.slice(0,i).concat(n.slice(i+1)))}else t.proceed=r}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),He=Ze.exports,Ye=Ft.parse(location.search);if("1"===Ye.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var qe={name:"Login",components:{LoginForm:ue,PasswordLessLoginForm:je,ResetPassword:$e,UpdatePassword:He},data:function(){return{loading:!1,user:(0,Rt.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,Rt.loadState)("core","loginErrors",[]),messages:(0,Rt.loadState)("core","loginMessages",[]),redirectUrl:(0,Rt.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,Rt.loadState)("core","loginThrottleDelay",0),canResetPassword:(0,Rt.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,Rt.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,Rt.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,Rt.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,Rt.loadState)("core","resetPasswordUser",""),directLogin:"1"===Ye.direct,hasPasswordless:(0,Rt.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,Rt.loadState)("core","countAlternativeLogins",!1),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,Rt.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0}}},Ke=r(35162),Ge={};Ge.styleTagTransform=ee(),Ge.setAttributes=Jt(),Ge.insert=Vt().bind(null,"head"),Ge.domAPI=Kt(),Ge.insertStyleElement=Xt(),Yt()(Ke.Z,Ge),Ke.Z&&Ke.Z.locals&&Ke.Z.locals;var Ve=(0,re.Z)(qe,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",{key:"login"},[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t")]):t._e(),t._v(" "),n("br"),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Login form is disabled."))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])])])],1)}),[],!1,null,null,null).exports,We={data:function(){return{OC:It}},methods:{t:yt.translate.bind(yt),n:yt.translatePlural.bind(yt)}};i.default.mixin(We),(new(i.default.extend(Ve))).$mount("#login")},82966:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".submit-wrapper[data-v-e3d85cce]{display:flex;align-items:center;justify-content:center;padding:10px 5px;position:relative;margin:0 auto}.submit-wrapper__input[data-v-e3d85cce]{width:260px;height:50px}.submit-wrapper__icon[data-v-e3d85cce]{display:flex;position:absolute;right:24px;transition:right 100ms ease-in-out;pointer-events:none}.submit-wrapper__input:hover+.submit-wrapper__icon[data-v-e3d85cce]:not(.icon-loading-small-dark),.submit-wrapper__input:focus+.submit-wrapper__icon[data-v-e3d85cce]:not(.icon-loading-small-dark),.submit-wrapper__input:active+.submit-wrapper__icon[data-v-e3d85cce]:not(.icon-loading-small-dark){right:20px}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AA8DA,iCACI,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CACH,aAAA,CAEA,wCACC,WAAA,CACA,WAAA,CAGD,uCACC,YAAA,CACA,iBAAA,CACA,UAAA,CACA,kCAAA,CAKA,mBAAA,CAGD,uSAGC,UAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.submit-wrapper {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 10px 5px;\n    position: relative;\n\tmargin: 0 auto;\n\n\t&__input {\n\t\twidth: 260px;\n\t\theight: 50px;\n\t}\n\n\t&__icon {\n\t\tdisplay: flex;\n\t\tposition: absolute;\n\t\tright: 24px;\n\t\ttransition: right 100ms ease-in-out;\n\t\t/* The submit icon is positioned on the submit button.\n\t\tFrom the user point of view the icon is part of the\n\t\tbutton, so the clicks on the icon have to be\n\t\tapplied to the button instead. */\n\t\tpointer-events: none;\n\t}\n\n\t&__input:hover + &__icon:not(.icon-loading-small-dark),\n\t&__input:focus + &__icon:not(.icon-loading-small-dark),\n\t&__input:active + &__icon:not(.icon-loading-small-dark) {\n\t\tright: 20px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},66074:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".toggle-password[data-v-8c61dc2a]{position:absolute;top:6px;right:10px;color:var(--color-text-lighter)}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AAwPA,kCACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,+BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.toggle-password {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 10px;\n\tcolor: var(--color-text-lighter);\n}\n"],sourceRoot:""}]),e.Z=a},2340:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},71599:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\n.update[data-v-9caa2c8a] {\n\twidth: auto;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:";AAwIA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t\x3c!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"--\x3e\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"update\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message\"\n\t\t\t\tclass=\"update\"\n\t\t\t\t:class=\"{warning: error}\" />\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},52033:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},35162:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:";AA6KA;CACA,uBAAA;AACA;AACA;CACA,UAAA;AACA",sourcesContent:["\x3c!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  --\x3e\n\n<template>\n\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\"\n\t\t\t\tkey=\"login\">\n\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<br>\n\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a v-else\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t</a>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a href=\"#\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n\t<div v-else>\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div class=\"warning\">\n\t\t\t\t{{ t('core', 'Login form is disabled.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n<\/script>\n\n<style>\n\t.fade-enter-active, .fade-leave-active {\n\t\ttransition: opacity .3s;\n\t}\n\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\t\topacity: 0;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(2,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?i:""},2:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.noop,data:r,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?i:""},3:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(8,r,0),inverse:t.program(11,r,0),data:r,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?i:""},8:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(9,r,0),inverse:t.noop,data:r,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?i:""},9:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,r){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(14,r,0),inverse:t.noop,data:r,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"topAction"):i,{name:"if",hash:{},fn:t.program(16,r,0),inverse:t.noop,data:r,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?i:"")},14:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"topAction"):i,{name:"if",hash:{},fn:t.program(19,r,0),inverse:t.program(21,r,0),data:r,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?i:""},19:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+'</div>\n\t</a>\n  \t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n  \t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t</a>\n'},21:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n</a>\n'},25:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(i=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"actions"):i,{name:"each",hash:{},fn:t.program(26,r,0),inverse:t.noop,data:r,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?i:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(i=null!=(i=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?i:s)===l?i.call(a,{name:"hyperlink",hash:{},data:r,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):i)+'">\n\t\t\t\t\t<img src="'+c(typeof(i=null!=(i=u(n,"icon")||(null!=e?u(e,"icon"):e))?i:s)===l?i.call(a,{name:"icon",hash:{},data:r,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):i)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(i=null!=(i=u(n,"title")||(null!=e?u(e,"title"):e))?i:s)===l?i.call(a,{name:"title",hash:{},data:r,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):i)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"avatar"):i,{name:"if",hash:{},fn:t.program(1,r,0),inverse:t.program(7,r,0),data:r,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(13,r,0),inverse:t.program(18,r,0),data:r,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasTwoActions"):i,{name:"if",hash:{},fn:t.program(23,r,0),inverse:t.noop,data:r,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasManyActions"):i,{name:"if",hash:{},fn:t.program(25,r,0),inverse:t.noop,data:r,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?i:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):i)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:r,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):i)+"</h2>\n</div>\n"},3:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?i:s)===l?i.call(a,{name:"contactsAppURL",hash:{},data:r,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?i:s)===l?i.call(a,{name:"showAllContactsText",hash:{},data:r,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):i)+"</a></div>\n"},5:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,r,0),inverse:t.noop,data:r,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?i:""},6:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtURL",hash:{},data:r,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtText",hash:{},data:r,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):i)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"unless").call(a,null!=(i=null!=e?s(e,"contacts"):e)?s(i,"length"):i,{name:"unless",hash:{},fn:t.program(1,r,0),inverse:t.noop,data:r,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?i:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(i=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?i:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):i)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):i)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):i)+'" value="'+c(typeof(i=null!=(i=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?i:s)===l?i.call(a,{name:"searchTerm",hash:{},data:r,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):i)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}r.keys=function(){return Object.keys(o)},r.resolve=i,t.exports=r,r.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var n=r[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,o,r){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],r=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&r||a>=r)&&Object.keys(i.O).every((function(t){return i.O[t](n[l])}))?n.splice(l--,1):(s=!1,r<a&&(a=r));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=4577,function(){i.b=document.baseURI||self.location.href;var t={4577:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var u=l(i)}for(e&&e(n);c<a.length;c++)r=a[c],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(40199)}));a=i.O(a)}();
-//# sourceMappingURL=core-login.js.map?v=2a4d8dfc22f590c1f7ab
\ No newline at end of file
+!function(){var e,o={78795:function(e,o,r){"use strict";var i=r(20144),a=r(74854),s=r(19755),l=r.n(s),c=r(79753),u={},d=[],p=r(18181),f=r(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){p.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(function(t){return t.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,f.PV)(t,{timeout:f.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||f.TN;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=p.ZP.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!Ut.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Ut.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var w=window.oc_appconfig||{},y={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=r(72316),C=r.n(P),k=r(87240),x={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function A(t,e){if(p.ZP.isArray(t))return p.ZP.map(t,(function(t){return A(t,e)}));var n={href:t.href};return p.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var r=o;o in e&&(r=e[o]),n[r]=t.properties[o]}})),n.id||(n.id=O(n.href)),n}function O(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function T(t){return t>=200&&t<=299}function E(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var r=e[n],i=t[n];r||(console.warn('No matching DAV property for property "'+n),r=n),(p.ZP.isBoolean(i)||p.ZP.isNumber(i))&&(i=""+i),o[r]=i}return o}(n.changed,e.davProperties),o).then((function(t){T(t.status)?p.ZP.isFunction(e.success)&&e.success(n.toJSON()):p.ZP.isFunction(e.error)&&e.error(t)}))}var j=C().noConflict();Object.assign(j,{davCall:function(t,e){var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:p.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=p.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,p.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(T(t.status)){if(p.ZP.isFunction(e.success)){var n=p.ZP.invert(e.davProperties),o=A(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?E(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(r){T(r.status)?E(t,e,n,o):p.ZP.isFunction(e.error)&&e.error(r)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(T(t.status)){if(p.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),r=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&r&&(o.id=O(r)),void e.success(o)}if(207===t.status){var i=p.ZP.invert(e.davProperties);e.success(A(t.body,i))}else e.success(t.body)}}else p.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var r={type:x[e]||e},i=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?r.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(r.type="PUT")),o.url||(r.url=p.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(r.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==r.type&&(r.processData=!1),"PROPFIND"===r.type||"PROPPATCH"===r.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(p.ZP.isFunction(a)?r.davProperties=a.call(n):r.davProperties=a),r.davProperties=p.ZP.extend(r.davProperties||{},o.davProperties),p.ZP.isUndefined(o.depth)&&(o.depth=i?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(p.ZP.extend(r,o),n);return n.trigger("request",n,l,o),l}}(j)});var S=j,L=r(65358),I=window._oc_config||{},U=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),$=P.Collection.extend({model:U}),R=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new N({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),N=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:r(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),F=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:r(95386),error:r(20421),menu:r(66115),list:r(34083)},_onSearch:p.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(p.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(p.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(p.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new R({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Ut.generateUrl("/apps/contacts"),canInstallApp:Ut.isUserAdmin(),contactsAppMgmtURL:Ut.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new F({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),Ut.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=Ut.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),p.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new $(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var B=M,z=document.getElementsByTagName("head")[0].getAttribute("data-user"),D=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==z&&z;function H(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Y(t,e,n){return e&&H(t.prototype,e),n&&H(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var q={Search:Y((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},K=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function V(t){return V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},V(t)}var G,W,J,Q={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",Q.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",Q.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",Q.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,r){return this.message(t,e,"none",n,o,void 0===r||r)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",Q.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,r,i,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+Q.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),f=l()("<input/>");f.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",i);var h=l()("<label/>").attr("for",c+"-input").text(i+": ");d.append(h),d.append(f),void 0===r&&(r=!1),l()("body").append(d),void 0!==o&&(o=p.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,f.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,f.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:r,buttons:m,close:function(){void 0!==o&&o(!1,f.val())}}),f.focus(),Q.dialogsCounter++}))},filepicker:function(e,n,o,r,i,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),p=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=q.Sharing&&q.Sharing.PublicApp&&q.Sharing.PublicApp.fileList?q.Sharing.PublicApp.fileList.filesClient:Ut.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(f){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==r&&(r=[]),"string"==typeof r&&(r=[r]),u.$filePicker=f.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:p,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",r).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===i&&(i=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){K(t)&&u._onGridviewChange()})),u._getGridSettings();var h=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),h.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),h.click()}))})),h.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Ut.registerMenu(h,u.$filePicker.find(".menu"),(function(){g.tooltip("hide"),g.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=g.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),g.selectRange(0,e)}));var m=u.$filePicker.find(".filenameform"),g=m.find("input[type='text']"),v=m.find("input[type='submit']");g.on("keydown",(function(t){K(t)&&(t.stopImmediatePropagation(),t.preventDefault(),m.submit())})),v.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.submit()}));m.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=g.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Ut.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){g.attr("title",t),g.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),g.tooltip("_fixTitle"),g.tooltip("show"),g.addClass("error")}return!1}()){var n=g.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Ut.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),g.val(p)}})),g.on("input",(function(t){g.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){K(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){K(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(K(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)}})),u._fillFilePicker(s)}));var w=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var r=u.$filelist.find("tr.filepicker_element_selected").data("entryname");r&&(e+="/"+r)}n(e,t),u.$filePicker.ocdialog("close")}},y=[];a===Q.FILEPICKER_TYPE_CHOOSE?y.push({text:t("core","Choose"),click:function(){w(Q.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===Q.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){y.push({text:t.text,click:function(){w(t.type)},defaultButton:t.defaultButton})})):(a!==Q.FILEPICKER_TYPE_COPY&&a!==Q.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Copy"),click:function(){w(Q.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==Q.FILEPICKER_TYPE_MOVE&&a!==Q.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Move"),click:function(){w(Q.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:i,buttons:y,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,r,i,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+Q.dialogsCounter+"-content",d="#"+u,p=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(p);var f=[];switch(r){case Q.YES_NO_BUTTONS:f=[{text:t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case Q.OK_BUTTON:f[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==i&&i()},defaultButton:!0};break;default:"object"===V(r)&&r.type===Q.YES_NO_BUTTONS&&(f=[{text:r.cancel||t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:r.confirm||t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:r.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){i&&i(!1)},modal:a,buttons:f}),Q.dialogsCounter++})).fail((function(o,r){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:r}))}))},_fileexistsshown:!1,fileexists:function(e,o,r,i){var a=this,s=new(l().Deferred),c=function(t,e,n,o,r){o=Math.round(o),r=Math.round(r);for(var i=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,r),s=i.data,l=a.data,c=e/o,u=n/r,d=Math.ceil(c/2),p=Math.ceil(u/2),f=0;f<r;f++)for(var h=0;h<o;h++){for(var m=4*(h+f*o),g=0,v=0,w=0,y=0,b=0,_=0,P=0,C=(f+.5)*u,k=Math.floor(f*u);k<(f+1)*u;k++)for(var x=Math.abs(C-(k+.5))/p,A=(h+.5)*c,O=x*x,T=Math.floor(h*c);T<(h+1)*c;T++){var E=Math.abs(A-(T+.5))/d,j=Math.sqrt(O+E*E);j>=-1&&j<=1&&(g=2*j*j*j-3*j*j+1)>0&&(P+=g*s[3+(E=4*(T+k*e))],w+=g,s[E+3]<255&&(g=g*s[E+3]/250),y+=g*s[E],b+=g*s[E+1],_+=g*s[E+2],v+=g)}l[m]=y/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/w}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,r)),t.width=o,t.height=r,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,r){var i=n.find(".template").clone().removeClass("template").addClass("conflict"),a=i.find(".original"),s=i.find(".replacement");i.data("data",e),i.find(".filename").text(o.name),a.find(".size").text(Ut.Util.humanFileSize(o.size)),a.find(".mtime").text(Ut.Util.formatDate(o.mtime)),r.size&&r.lastModified&&(s.find(".size").text(Ut.Util.humanFileSize(r.size)),s.find(".mtime").text(Ut.Util.formatDate(r.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},p=Files.generatePreviewUrl(d);p=p.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+p+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),r=new Image;r.src=o,r.onload=function(){var t,n,o,i,a,s,l,u=(t=r,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),i=Math.min(s,l),a.width=i,a.height=i,a.getContext("2d").drawImage(t,n,o,i,i,0,0,i,i),c(a,i,i,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Ut.MimeType.getIconUrl(r.type),s.find(".icon").css("background-image","url("+u+")")}));var f=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+f),s.find("input:checkbox").attr("id","checkbox_replacement_"+f),n.append(i),r.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):r.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),r.size&&r.size>o.size?s.find(".size").css("font-weight","bold"):r.size&&r.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",p="#"+d;if(this._fileexistsshown){var f=l()(p+" .conflicts");u(f,o,r);var h=l()(p+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(p).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),f=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(f),o&&r){var h=f.find(".conflicts");u(h,o,r)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(e),l()(p).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.onContinue(l()(p+" .conflict")),l()(p).ocdialog("close")}}];l()(p).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(p).css("height","auto");var g=f.closest(".oc-dialog").find("button.continue");function v(){var t=f.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(p).find(".allnewfiles").on("click",(function(){l()(p).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".allexistingfiles").on("click",(function(){l()(p).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(p).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(p).on("click",".replacement,.allnewfiles",(function(){var e=l()(p).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allnewfiles").prop("checked",!0),l()(p).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text("")),v()})),l()(p).on("click",".original,.allexistingfiles",(function(){var e=l()(p).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allexistingfiles").prop("checked",!0),l()(p).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(Ut.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Ut.currentUser&&l().post(Ut.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),l()(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Ut.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Ut.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Ut.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(Ut.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:function(e){var n=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var o=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter");"string"==typeof o&&(o=[o]),n.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===n.filepicker.sortOrder?n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),n.filepicker.filesClient.getFolderContents(e).then((function(i,a){n.filelist=a,o&&o.length>0&&-1===o.indexOf("*")&&(a=a.filter((function(t){return"dir"===t.type||-1!==o.indexOf(t.mimetype)}))),r&&(a=a.filter(r));var s=document.getElementById("showHiddenFiles");null===s||"1"===s.value||(a=a.filter((function(t){return!t.name.startsWith(".")})));var c={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Ut.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}},u=c[n.filepicker.sortField]||c.name;a=a.sort((function(t,e){var o=function(t){return t.tags&&t.tags.indexOf(Ut.TAG_FAVORITE)>=0};return o(t)&&!o(e)?-1:!o(t)&&o(e)?1:"asc"===n.filepicker.sortOrder?u(t,e):-u(t,e)})),n._fillSlug(),0===a.length?(n.$filePicker.find(".emptycontent").show(),n.$fileListHeader.hide()):(n.$filePicker.find(".emptycontent").hide(),n.$fileListHeader.show()),n.$filelist.empty(),l().each(a,(function(o,r){var i,a;if(r.icon=Ut.MimeType.getIconUrl(r.mimetype),void 0!==r.size&&r.size>=0?(i=Ut.Util.humanFileSize(parseInt(r.size,10),!0),a=Math.round(160-Math.pow(r.size/1048576,2))):(i=t("files","Pending"),a=80),r.name.length>=10)var s=Math.min(Math.floor(r.name.length/2),10),c=r.name.substr(0,r.name.length-s),u=r.name.substr(r.name.length-s);else c=r.name,u="";var d=n.$listTmpl.octemplate({type:r.type,dir:e,filename:r.name,filename1:c,filename2:u,date:Ut.Util.relativeModifiedDate(r.mtime),size:i,sizeColor:a,icon:r.icon});if("file"===r.type){var p={file:e+"/"+r.name,x:100,y:100},f=new Image,h=Ut.generateUrl("/core/preview.png?")+l().param(p);f.onload=function(){f.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},f.src=h}n.$filelist.append(d)})),n.$filelistContainer.removeClass("icon-loading")}))},_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(n){var r=n.split("/");l().each(r,(function(t,n){if(""===(n=r.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:r.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var r=t.target.closest(".oc-dialog"),i=l()(".primary",r);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),r=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),i=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:i.text(o);break;case this.FILEPICKER_TYPE_MOVE:i.text(r);break;case this.FILEPICKER_TYPE_COPY_MOVE:i.eq(0).text(o),i.eq(1).text(r)}}},X=Q,tt=(G=document,W=a.emit,J=G.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return J},setToken:function(t){W("csrf-token-update",{token:J=t})}}).getToken,et=function t(e,n){var o,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)i+=o+"="+encodeURIComponent(n[o])+"&";if(i+="requesttoken="+encodeURIComponent(tt()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),r="&",-1===e.indexOf("?")&&(r="?"),this.iframe.attr("src",e+r+"fallback=true&fallback_id="+t.iframeCount+"&"+i),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else r="&",-1===e.indexOf("?")&&(r="?"),this.source=new EventSource(e+r+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};et.fallBackSources=[],et.iframeCount=0,et.fallBackCallBack=function(t,e,n){et.fallBackSources[t].fallBackCallBack(e,n)},et.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var nt=et,ot=r(42515),rt=null,it=function(t){if(rt){var e=rt;rt.trigger(new(l().Event)("beforeHide")),rt.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),rt=null},at=!!window._oc_isadmin,st=r(27856),lt=r.n(st),ct=r(86834),ut=r.n(ct),dt=r(46488),pt=r.n(dt),ft=r(95573),ht=r.n(ft);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var mt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},gt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function vt(t){return vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},vt(t)}var wt={load:function(t,e){if(mt(t)||"en"===Ut.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var r=this,i=(0,c.generateFilePath)(t,"l10n",Ut.getLocale()+".json");return l().get(i).then((function(e){e.translations&&r.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,r;n=t,o=e,r=this._getPlural,mt(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,r):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,r)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,r){var i=r||{};p.ZP.defaults(i,{escape:!0,sanitize:!0});var a=i.sanitize?lt().sanitize:pt(),s=i.escape?ht():pt(),l=e,c=gt(t).translations[e];return void 0!==c&&(l=c),"object"===vt(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,r,i){var a="_"+e+"_::_"+n+"_",s=gt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],r,o,i)}}return 1===o?this.translate(t,e,r,o,i):this.translate(t,n,r,o,i)},_getPlural:function(t){var e=Ut.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},yt=wt;ut().registerHelper("t",(function(t,e){return wt.translate(t,e)}));var bt=r(9944),_t={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},Pt=r(30381),Ct=r.n(Pt),kt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",p.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Ct().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Ct().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var r={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},i=p.ZP.extend(r,n),a=this;this.requiresPasswordConfirmation()&&Ut.dialogs.prompt(i.text,i.title,(function(t,e){t&&""!==e?a._confirmPassword(e,i):p.ZP.isFunction(o)&&o()}),!0,i.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==i.error){var e=l()("<p></p>").addClass("msg warning").text(i.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(i.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,p.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Ut.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},xt=window._theme||{},At={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Ut.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var r,i=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=i.length;a<s;a++)(r=i[a]).style.fill=r.style.fill,r.style.stroke=r.style.stroke,r.removeAttribute("filter"),r.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Ut.parseQueryString(this._decodeQuery(e))),(t=p.ZP.extend(t||{},Ut.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,p.ZP.isString(e)?e=Ut.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function Ot(t){for(var e,n=[],o=0,r=-1,i=0;o<t.length;){e=t.charAt(o);var a=!i&&"."===e||e>="0"&&e<="9";a!==i&&(n[++r]="",i=a),n[r]+=e,o++}return n}var Tt={History:At,humanFileSize:r(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ct()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Ct()().diff(Ct()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ct()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=Ot(t),r=Ot(e);for(n=0;o[n]&&r[n];n++)if(o[n]!==r[n]){var i=Number(o[n]),a=Number(r[n]);return i==o[n]&&a==r[n]?i-a:o[n].localeCompare(r[n],Ut.getLanguage())}return o.length-r.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var r=n[o].split("=");if(r[0].trim()===t&&r[1].trim()===e)return!0}return!1}},Et=window._oc_debug,jt=window._oc_webroot;if(void 0===jt){var St=(jt=location.pathname).indexOf("/index.php/");jt=-1!==St?jt.substr(0,St):jt.substr(0,jt.lastIndexOf("/"))}var Lt,It=jt,Ut={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(I.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var r=(0,c.generateFilePath)(t,"js",e+".js");return u[r]?n&&n():(o=l().Deferred(),l().getScript(r,(function(){return o.resolve()})),u[r]=o),u[r]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:y,appConfig:w,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var r=l()("#appsettings_popup");if(0===r.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(r=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),r.is(":visible"))r.hide().remove();else{var i=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){r.html(e).ready((function(){if(r.prepend('<span class="arrow '+i+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),r.find(".close").bind("click",(function(){r.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:S,ContactsMenu:B,config:I,currentUser:Z,dialogs:X,EventSource:nt,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return at},L10N:yt,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Ut._reloadCalled)&&(p.ZP.contains([302,303,307,401],t.status)&&Ut.currentUser?setTimeout((function(){if(!Ut._userIsNavigatingAway&&!Ut._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Ut.reload()),t++}),1e3);Ut._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Ut._userIsNavigatingAway||Ut._reloadCalled||Ut._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,ot.getCapabilities)()},hideMenus:it,registerMenu:function(t,e,n,o){e.addClass("menu");var r="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(r?"click.menu":"click.menu keyup.menu",(function(r){r.preventDefault(),r.key&&"Enter"!==r.key||(e.is(rt)?it():(rt&&it(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),rt=e))}))},showMenu:function(t,e,n){e.is(rt)||(it(),rt=e,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),p.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(rt)&&it(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.EZ,encodePath:L.Ec,dirname:L.XX,isSamePath:L.Mg,joinPaths:L.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:bt.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:yt.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,r={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var i=t.replace(/\+/g,"%20").split("&"),a=0;a<i.length;a++){var s=i[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(r[o]=n.length>1?decodeURIComponent(n[1]):null)}return r},msg:_t,Notification:h,PasswordConfirmation:kt,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].attach&&o[r].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].detach&&o[r].detach(e,n)}},theme:xt,Util:Tt,debug:Et,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Lt=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Lt=Lt[e[o]]))return!1;return Lt[n]}),set:function(t){return function(e,n){for(var o=e.split("."),r=o.pop(),i=0;i<o.length;i++)t[o[i]]||(t[o[i]]={}),t=t[o[i]];return t[r]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:tt(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:It};(0,a.subscribe)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var $t=r(16453),Rt=r(17563),Nt=r(55586),Ft=r.n(Nt),Mt=r(1412),Bt=r.n(Mt),zt=r(36765),Dt=r(77883),Zt={name:"LoginButton",components:{ArrowRight:r(73723).default,Button:Bt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Ht=r(51900),Yt=(0,Ht.Z)(Zt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Button",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?n("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):n("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,null,null).exports,qt={name:"LoginForm",components:{Button:Bt(),Eye:zt.Z,EyeOff:Dt.Z,LoginButton:Yt},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:Ft().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,user:this.username,password:"",passwordInputType:"password"}},computed:{apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")},isPasswordHidden:function(){return"password"===this.passwordInputType}},mounted:function(){""===this.username?this.$refs.user.focus():this.$refs.password.focus()},methods:{togglePassword:function(){"password"===this.passwordInputType?this.passwordInputType="text":this.passwordInputType="password"},updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},Kt=r(93379),Vt=r.n(Kt),Gt=r(7795),Wt=r.n(Gt),Jt=r(90569),Qt=r.n(Jt),Xt=r(3565),te=r.n(Xt),ee=r(19216),ne=r.n(ee),oe=r(44589),re=r.n(oe),ie=r(66074),ae={};ae.styleTagTransform=re(),ae.setAttributes=te(),ae.insert=Qt().bind(null,"head"),ae.domAPI=Wt(),ae.insertStyleElement=ne(),Vt()(ie.Z,ae),ie.Z&&ie.Z.locals&&ie.Z.locals;var se=(0,Ht.Z)(qt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",[t.apacheAuthFailed?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Server side authentication failed!"))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),t._l(t.messages,(function(e,o){return n("div",{key:o,staticClass:"warning"},[t._v("\n\t\t\t"+t._s(e)),n("br")])})),t._v(" "),t.internalException?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","An internal error occurred."))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("p",{staticClass:"grouptop",class:{shake:t.invalidPassword}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocapitalize:"none",autocorrect:"off",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("p",{staticClass:"groupbottom",class:{shake:t.invalidPassword}},[n("input",{ref:"password",staticClass:"password-with-toggle",attrs:{id:"password",type:t.passwordInputType,name:"password",autocorrect:"off",autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",placeholder:t.t("core","Password"),"aria-label":t.t("core","Password"),required:""}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","Password")))]),t._v(" "),n("Button",{staticClass:"toggle-password",attrs:{type:"tertiary-no-background","aria-label":t.isPasswordHidden?t.t("core","Show password"):t.t("core","Hide password")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.togglePassword.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isPasswordHidden?n("Eye",{attrs:{size:20}}):n("EyeOff",{attrs:{size:20}})]},proxy:!0}])})],1),t._v(" "),n("LoginButton",{attrs:{loading:t.loading}}),t._v(" "),t.invalidPassword?n("p",{staticClass:"warning wrongPasswordMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","Wrong username or password."))+"\n\t\t")]):t.userDisabled?n("p",{staticClass:"warning userDisabledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","User disabled"))+"\n\t\t")]):t._e(),t._v(" "),t.throttleDelay&&t.throttleDelay>5e3?n("p",{staticClass:"warning throttledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."))+"\n\t\t")]):t._e(),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],2)])}),[],!1,null,"8c61dc2a",null),le=se.exports,ce=r(4820),ue=r(85963),de=r(64150);function pe(t){return pe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pe(t)}function fe(t){return function(t){if(Array.isArray(t))return he(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return he(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?he(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function he(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function me(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function ge(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?me(Object(n),!0).forEach((function(e){ve(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):me(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function ve(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function we(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ye(t,e){if(e&&("object"===pe(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function be(t){var e="function"==typeof Map?new Map:void 0;return be=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return _e(t,arguments,ke(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Ce(o,t)},be(t)}function _e(t,e,n){return _e=Pe()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var r=new(Function.bind.apply(t,o));return n&&Ce(r,n.prototype),r},_e.apply(null,arguments)}function Pe(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Ce(t,e){return Ce=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},Ce(t,e)}function ke(t){return ke=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},ke(t)}var xe=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ce(t,e)}(i,t);var e,n,o,r=(e=i,n=Pe(),function(){var t,o=ke(e);if(n){var r=ke(this).constructor;t=Reflect.construct(o,arguments,r)}else t=o.apply(this,arguments);return ye(this,t)});function i(){return we(this,i),r.apply(this,arguments)}return o=i,Object.defineProperty(o,"prototype",{writable:!1}),o}(be(Error)),Ae={name:"PasswordLessLoginForm",components:{LoginButton:Yt,InformationIcon:ue.Z,LockOpenIcon:de.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof xe?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),ce.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new xe;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return ge(ge({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,fe(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,fe(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),ce.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){console.debug("Logged in redirecting"),window.location.href=o})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Oe=r(2340),Te={};Te.styleTagTransform=re(),Te.setAttributes=te(),Te.insert=Qt().bind(null,"head"),Te.domAPI=Wt(),Te.insertStyleElement=ne(),Vt()(Oe.Z,Te),Oe.Z&&Oe.Z.locals&&Oe.Z.locals;var Ee=(0,Ht.Z)(Ae,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"adf4afc4",null),je=Ee.exports,Se={name:"ResetPassword",components:{LoginButton:Yt},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return ce.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},Le=r(12345),Ie={};Ie.styleTagTransform=re(),Ie.setAttributes=te(),Ie.insert=Qt().bind(null,"head"),Ie.domAPI=Wt(),Ie.insertStyleElement=ne(),Vt()(Le.Z,Ie),Le.Z&&Le.Z.locals&&Le.Z.locals;var Ue=(0,Ht.Z)(Se,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],attrs:{id:"user",type:"text",name:"user",autocapitalize:"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("div",{attrs:{id:"reset-password-wrapper"}},[n("LoginButton",{attrs:{value:t.t("core","Reset password")}})],1),t._v(" "),"send-success"===t.message?n("p",{staticClass:"notecard success"},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("p",{staticClass:"notecard error"},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("p",{staticClass:"notecard error"},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])])])}),[],!1,null,"301e39ac",null),$e=Ue.exports;function Re(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}var Ne={name:"UpdatePassword",components:{LoginButton:Yt},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,ce.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(r=o.data)||"success"!==r.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!r||!r.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!r||!r.msg){e.next=22;break}throw new Error(r.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(t){Re(i,o,r,a,s,"next",t)}function s(t){Re(i,o,r,a,s,"throw",t)}a(void 0)}))})()}}},Fe=Ne,Me=r(52033),Be={};Be.styleTagTransform=re(),Be.setAttributes=te(),Be.insert=Qt().bind(null,"head"),Be.domAPI=Wt(),Be.insertStyleElement=ne(),Vt()(Me.Z,Be),Me.Z&&Me.Z.locals&&Me.Z.locals;var ze=(0,Ht.Z)(Fe,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,r=!!o.checked;if(Array.isArray(n)){var i=t._i(n,null);o.checked?i<0&&(t.proceed=n.concat([null])):i>-1&&(t.proceed=n.slice(0,i).concat(n.slice(i+1)))}else t.proceed=r}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),De=ze.exports,Ze=Rt.parse(location.search);if("1"===Ze.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var He={name:"Login",components:{LoginForm:le,PasswordLessLoginForm:je,ResetPassword:$e,UpdatePassword:De,Button:Bt()},data:function(){return{loading:!1,user:(0,$t.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,$t.loadState)("core","loginErrors",[]),messages:(0,$t.loadState)("core","loginMessages",[]),redirectUrl:(0,$t.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,$t.loadState)("core","loginThrottleDelay",0),canResetPassword:(0,$t.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,$t.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,$t.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,$t.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,$t.loadState)("core","resetPasswordUser",""),directLogin:"1"===Ze.direct,hasPasswordless:(0,$t.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,$t.loadState)("core","countAlternativeLogins",!1),alternativeLogins:(0,$t.loadState)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,$t.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0},goTo:function(t){window.location.href=t}}},Ye=r(58820),qe={};qe.styleTagTransform=re(),qe.setAttributes=te(),qe.insert=Qt().bind(null,"head"),qe.domAPI=Wt(),qe.insertStyleElement=ne(),Vt()(Ye.Z,qe),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var Ke=(0,Ht.Z)(He,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"guest-box",attrs:{id:"login"}},[!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),n("br"),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("div",{staticClass:"warning"},[t._v("\n\t\t\t\t"+t._s(t.t("core","Login form is disabled."))),n("br"),t._v(" "),n("small",[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t\t")])])])],1),t._v(" "),n("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(e,o){return n("Button",{key:o,class:[e.class],attrs:{type:"primary",wide:!0,role:"link",href:e.href},on:{click:function(n){return t.goTo(e.href)}}},[t._v("\n\t\t\t"+t._s(e.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,Ve={data:function(){return{OC:Ut}},methods:{t:yt.translate.bind(yt),n:yt.translatePlural.bind(yt)}};i.default.mixin(Ve),(new(i.default.extend(Ke))).$mount("#login")},66074:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".toggle-password[data-v-8c61dc2a]{position:absolute;top:6px;right:10px;color:var(--color-text-lighter)}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AAwPA,kCACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,+BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.toggle-password {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 10px;\n\tcolor: var(--color-text-lighter);\n}\n"],sourceRoot:""}]),e.Z=a},2340:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},58820:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}#lost-password{padding:4px;margin:8px;border-radius:var(--border-radius)}.alternative-logins button{margin-top:12px;margin-bottom:12px}.alternative-logins button:first-child{margin-top:0}.alternative-logins button:last-child{margin-bottom:0}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AAkMA,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,eACC,WAAA,CACA,UAAA,CACA,kCAAA,CAGD,2BACC,eAAA,CACA,kBAAA,CACA,uCACC,YAAA,CAGD,sCACC,eAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n#lost-password {\n\tpadding: 4px;\n\tmargin: 8px;\n\tborder-radius: var(--border-radius);\n}\n\n.alternative-logins button {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n\t&:first-child {\n\t\tmargin-top: 0;\n\t}\n\n\t&:last-child {\n\t\tmargin-bottom: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},12345:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\n.update[data-v-301e39ac] {\n\twidth: auto;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:";AAqIA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t\x3c!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"--\x3e\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"notecard success\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"notecard error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"notecard error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},52033:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(2,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?i:""},2:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.noop,data:r,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?i:""},3:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(8,r,0),inverse:t.program(11,r,0),data:r,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?i:""},8:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(9,r,0),inverse:t.noop,data:r,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?i:""},9:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,r){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(14,r,0),inverse:t.noop,data:r,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"topAction"):i,{name:"if",hash:{},fn:t.program(16,r,0),inverse:t.noop,data:r,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?i:"")},14:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"topAction"):i,{name:"if",hash:{},fn:t.program(19,r,0),inverse:t.program(21,r,0),data:r,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?i:""},19:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+'</div>\n\t</a>\n  \t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n  \t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t</a>\n'},21:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n</a>\n'},25:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(i=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"actions"):i,{name:"each",hash:{},fn:t.program(26,r,0),inverse:t.noop,data:r,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?i:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(i=null!=(i=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?i:s)===l?i.call(a,{name:"hyperlink",hash:{},data:r,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):i)+'">\n\t\t\t\t\t<img src="'+c(typeof(i=null!=(i=u(n,"icon")||(null!=e?u(e,"icon"):e))?i:s)===l?i.call(a,{name:"icon",hash:{},data:r,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):i)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(i=null!=(i=u(n,"title")||(null!=e?u(e,"title"):e))?i:s)===l?i.call(a,{name:"title",hash:{},data:r,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):i)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"avatar"):i,{name:"if",hash:{},fn:t.program(1,r,0),inverse:t.program(7,r,0),data:r,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(13,r,0),inverse:t.program(18,r,0),data:r,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasTwoActions"):i,{name:"if",hash:{},fn:t.program(23,r,0),inverse:t.noop,data:r,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasManyActions"):i,{name:"if",hash:{},fn:t.program(25,r,0),inverse:t.noop,data:r,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?i:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):i)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:r,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):i)+"</h2>\n</div>\n"},3:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?i:s)===l?i.call(a,{name:"contactsAppURL",hash:{},data:r,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?i:s)===l?i.call(a,{name:"showAllContactsText",hash:{},data:r,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):i)+"</a></div>\n"},5:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,r,0),inverse:t.noop,data:r,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?i:""},6:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtURL",hash:{},data:r,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtText",hash:{},data:r,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):i)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"unless").call(a,null!=(i=null!=e?s(e,"contacts"):e)?s(i,"length"):i,{name:"unless",hash:{},fn:t.program(1,r,0),inverse:t.noop,data:r,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?i:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(i=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?i:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):i)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):i)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):i)+'" value="'+c(typeof(i=null!=(i=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?i:s)===l?i.call(a,{name:"searchTerm",hash:{},data:r,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):i)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}r.keys=function(){return Object.keys(o)},r.resolve=i,t.exports=r,r.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var n=r[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,o,r){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],r=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&r||a>=r)&&Object.keys(i.O).every((function(t){return i.O[t](n[l])}))?n.splice(l--,1):(s=!1,r<a&&(a=r));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=4577,function(){i.b=document.baseURI||self.location.href;var t={4577:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var u=l(i)}for(e&&e(n);c<a.length;c++)r=a[c],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(78795)}));a=i.O(a)}();
+//# sourceMappingURL=core-login.js.map?v=135225a2b2931c08df12
\ No newline at end of file
index 51b7ac018822ac4aed202aec14cd6a11130974d2..8165e32e3c971db359eafd299e3a6afc80c0a52c 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"core-login.js?v=2a4d8dfc22f590c1f7ab","mappings":";gBAAIA,iGC4BEC,EAAgB,GAChBC,EAAe,yBCQrB,GAECC,sBAAuB,KAEvBC,+BAAgC,KAMhCC,WAVc,SAUHC,GACVC,KAAKH,+BAAiCE,GAavCE,KAxBc,SAwBTC,EAAMH,GACNI,EAAAA,GAAAA,WAAaD,KAEhBH,EAAWG,EACXA,OAAOE,GAGHF,GAMLA,EAAKG,MAAK,WACLC,GAAAA,CAAEN,MAAM,GAAGO,SACdD,GAAAA,CAAEN,MAAM,GAAGO,SAASC,YAEpBC,QAAQC,MAAM,+CAEXV,OAASA,KAAKJ,wBACjBI,KAAKJ,sBAAwB,SAG3BG,GACHA,EAASY,OAENX,KAAKH,gCACRG,KAAKH,kCAnBLY,QAAQC,MAAM,2HAmChBE,SAnEc,SAmELC,EAAMC,IACdA,EAAUA,GAAW,IACbC,QAAS,EACjBD,EAAQE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,IAAMC,GAAQC,EAAAA,EAAAA,IAAYN,EAAMC,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,GAAAA,CAAEY,EAAME,eAahBC,KAtFc,SAsFTC,EAAMR,IAUVA,EAAUA,GAAW,IACbE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,IAAMC,GAAQC,EAAAA,EAAAA,IAXK,SAASG,GAC3B,OAAOA,EAAKC,WACVC,MAAM,KAAKC,KAAK,SAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,UAChBD,MAAM,KAAMC,KAAK,UAKMC,CAAWJ,GAAOR,GAE5C,OADAI,EAAME,aAAab,SAAWW,EACvBZ,GAAAA,CAAEY,EAAME,eAUhBO,WA9Gc,SA8GHL,GAMV,OALItB,KAAKJ,uBACRI,KAAKJ,sBAAsBY,YAE5BR,KAAKJ,uBAAwBuB,EAAAA,EAAAA,IAAYG,EAAM,CAAEN,QAASC,EAAAA,KAC1DjB,KAAKJ,sBAAsBwB,aAAab,SAAWP,KAAKJ,sBACjDU,GAAAA,CAAEN,KAAKJ,sBAAsBwB,eAerCQ,cAnIc,SAmIAN,EAAMR,IACnBA,EAAUA,GAAW,IACbE,QAAUF,EAAQE,SAAWa,EAAAA,GACrC,IAAMX,GAAQC,EAAAA,EAAAA,IAAYG,EAAMR,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,GAAAA,CAAEY,EAAME,eAShBU,SAjJc,WAkJb,OAAQxB,GAAAA,CAAE,YAAYyB,KAAK,aAAaC,SCnJ7BC,EAA4B9B,EAAAA,GAAAA,UAAW,WACnD+B,EAAAA,cAA2BC,EAAE,OAAQ,gCACnC,IAAU,CAAEC,UAAU,ICgGzB,EA3Ga,CACZC,yBADY,aAWbC,eAAsB,SAASC,IACVA,GAAOjC,GAAAA,CAAE,iBACjBkC,YAAY,aAAanB,OACrCf,GAAAA,CAAE,gBAAgBmC,QAAQ,IAAInC,IAAAA,OAAQ,gBASvCgC,eAAsB,SAASC,IACVA,GAAOjC,GAAAA,CAAE,iBACjBL,OAAOyC,SAAS,aAC5BpC,GAAAA,CAAE,gBAAgBmC,QAAQ,IAAInC,IAAAA,OAAQ,iBCjBvC,SAASK,EAAKgC,EAAQC,EAAU9B,GACf,SAAX6B,GAAgC,WAAXA,IAAwBE,GAAAA,qBAAAA,gCAKlD/B,EAAUA,GAAW,GACrBR,IAAAA,KAAO,CACNwC,KAAMH,EAAOI,cACbC,KAAKC,EAAAA,EAAAA,gBAAe,4CAA8CL,EAClEM,KAAMpC,EAAQoC,MAAQ,GACtBC,QAASrC,EAAQqC,QACjBzC,MAAOI,EAAQJ,SAVfmC,GAAAA,qBAAAA,4BAAoD1C,EAAEiD,KAAKzC,EAAMX,KAAM2C,EAAQC,EAAU9B,ICRpF,IAAMuC,EAAYC,OAAOC,cAAgB,GAMnCC,EAAY,CAIxBC,SAAU,SAASC,EAAKC,EAAKC,EAAc7D,IDyCrC,SAAkB2D,EAAKC,EAAKC,EAAc9C,IAChDA,EAAUA,GAAW,IACboC,KAAO,CACdU,aAAAA,GAGDjD,EAAK,MAAO,IAAM+C,EAAM,IAAMC,EAAK7C,GC9ClC2C,CAASC,EAAKC,EAAKC,EAAc,CAChCT,QAASpD,KAOX8D,SAAU,SAASH,EAAKC,EAAKG,IDkDvB,SAAkBJ,EAAKC,EAAKG,EAAOhD,IACzCA,EAAUA,GAAW,IACboC,KAAO,CACdY,MAAAA,GAGDnD,EAAK,OAAQ,IAAM+C,EAAM,IAAMC,EAAK7C,GCvDnC+C,CAASH,EAAKC,EAAKG,IAMpBC,QAAS,SAAShE,IDCZ,SAAiBe,GACvBH,EAAK,MAAO,GAAIG,GCDfiD,CAAQ,CACPZ,QAASpD,KAOXiE,QAAS,SAASN,EAAK3D,IDGjB,SAAiB2D,EAAK5C,GAC5BH,EAAK,MAAO,IAAM+C,EAAK5C,GCHtBkD,CAAQN,EAAK,CACZP,QAASpD,KAOXkE,UAAW,SAASP,EAAKC,ID0CnB,SAAmBD,EAAKC,EAAK7C,GACnCH,EAAK,SAAU,IAAM+C,EAAM,IAAMC,OC1ChCM,GAAAA,CAAUP,EAAKC,KCnDjB,OAFkDvD,IAA5BkD,OAAOY,kBAAkCZ,OAAOY,gDCMhEC,EAAY,CACjBC,OAAQ,OACRC,OAAQ,YACRC,MAAO,YACPC,OAAQ,SACRC,KAAM,YAcP,SAASC,EAAoBC,EAAQC,GACpC,GAAIxE,EAAAA,GAAAA,QAAUuE,GACb,OAAOvE,EAAAA,GAAAA,IAAMuE,GAAQ,SAASE,GAC7B,OAAOH,EAAoBG,EAAWD,MAGxC,IAAIE,EAAQ,CACXC,KAAMJ,EAAOI,MAsBd,OAnBA3E,EAAAA,GAAAA,KAAOuE,EAAOK,UAAU,SAASA,GAChC,GAAwB,oBAApBA,EAASC,OAIb,IAAK,IAAIrB,KAAOoB,EAASE,WAAY,CACpC,IAAIC,EAAUvB,EACVA,KAAOgB,IACVO,EAAUP,EAAchB,IAEzBkB,EAAMK,GAAWH,EAASE,WAAWtB,OAIlCkB,EAAMM,KAEVN,EAAMM,GAAKC,EAAoBP,EAAMC,OAG/BD,EASR,SAASO,EAAoBpC,GAC5B,IAAIqC,EAAWrC,EAAIsC,QAAQ,KACvBD,EAAW,IACdrC,EAAMA,EAAIuC,OAAO,EAAGF,IAGrB,IACIX,EADAc,EAAQxC,EAAIxB,MAAM,KAEtB,GACCkD,EAASc,EAAMA,EAAMxD,OAAS,GAC9BwD,EAAMC,aAGGf,GAAUc,EAAMxD,OAAS,GAEnC,OAAO0C,EAGR,SAASgB,EAAgBV,GACxB,OAAOA,GAAU,KAAOA,GAAU,IA+CnC,SAASW,EAAcC,EAAQ9E,EAAS+E,EAAOC,GAC9C,OAAOF,EAAOG,UACbjF,EAAQkC,IA9CV,SAA+CgD,EAAOrB,GACrD,IACIhB,EADAkB,EAAQ,GAEZ,IAAKlB,KAAOqC,EAAO,CAClB,IAAIC,EAActB,EAAchB,GAC5BG,EAAQkC,EAAMrC,GACbsC,IACJxF,QAAQyF,KAAK,0CAA4CvC,GACzDsC,EAActC,IAEXxD,EAAAA,GAAAA,UAAY2D,IAAU3D,EAAAA,GAAAA,SAAW2D,MAEpCA,EAAQ,GAAKA,GAEde,EAAMoB,GAAenC,EAEtB,OAAOe,EA+BNsB,CAAsCN,EAAMO,QAAStF,EAAQ6D,eAC7DmB,GACCO,MAAK,SAAS3B,GACXgB,EAAgBhB,EAAOM,QACtB7E,EAAAA,GAAAA,WAAaW,EAAQqC,UAGxBrC,EAAQqC,QAAQ0C,EAAMS,UAEbnG,EAAAA,GAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAMgE,MA+DV,ICzMD6B,EAAWC,IAAAA,aAGjBC,OAAOC,OAAOH,EAAU,CACvBI,QDqMsB,SAAC7F,EAAS+E,GAChC,IAAID,EAAS,IAAIgB,EAAAA,IAAAA,OAAW,CAC3BC,QAAS/F,EAAQkC,IACjB8D,cAAe3G,EAAAA,GAAAA,OAAS,CACvB,OAAQ,IACR,yBAA0B,MACxBW,EAAQgG,eAAiB,MAE7BlB,EAAOmB,WAAa,WACnB,OAAOjG,EAAQkC,KAEhB,IAAI8C,EAAU3F,EAAAA,GAAAA,OAAS,CACtB,mBAAoB,iBACpB,aAAgB0C,GAAGmE,cACjBlG,EAAQgF,SACX,MAAqB,aAAjBhF,EAAQgC,KApHb,SAAsB8C,EAAQ9E,EAAS+E,EAAOC,GAC7C,OAAOF,EAAOqB,SACbnG,EAAQkC,IACR7C,EAAAA,GAAAA,OAASW,EAAQ6D,gBAAkB,GACnC7D,EAAQoG,MACRpB,GACCO,MAAK,SAASc,GACf,GAAIzB,EAAgByB,EAASnC,SAC5B,GAAI7E,EAAAA,GAAAA,WAAaW,EAAQqC,SAAU,CAClC,IAAIiE,EAAejH,EAAAA,GAAAA,OAASW,EAAQ6D,eAChC0C,EAAU5C,EAAoB0C,EAASG,KAAMF,GAC7CtG,EAAQoG,MAAQ,GAEnBG,EAAQE,QAGTzG,EAAQqC,QAAQkE,SAGPlH,EAAAA,GAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAMyG,MAiGRK,CAAa5B,EAAQ9E,EAAS+E,EAAOC,GACjB,cAAjBhF,EAAQgC,KACX6C,EAAcC,EAAQ9E,EAAS+E,EAAOC,GAClB,UAAjBhF,EAAQgC,KA5EpB,SAAmB8C,EAAQ9E,EAAS+E,EAAOC,GAE1C,OAAOF,EAAO6B,QACb3G,EAAQgC,KACRhC,EAAQkC,IACR8C,EACA,MACCO,MAAK,SAAS3B,GACVgB,EAAgBhB,EAAOM,QAO5BW,EAAcC,EAAQ9E,EAAS+E,EAAOC,GANjC3F,EAAAA,GAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMgE,MAmETgD,CAAU9B,EAAQ9E,EAAS+E,EAAOC,GA1D3C,SAAoBF,EAAQ9E,EAAS+E,EAAOC,GAE3C,OADAA,EAAQ,gBAAkB,mBACnBF,EAAO6B,QACb3G,EAAQgC,KACRhC,EAAQkC,IACR8C,EACAhF,EAAQoC,MACPmD,MAAK,SAAS3B,GACf,GAAKgB,EAAgBhB,EAAOM,SAO5B,GAAI7E,EAAAA,GAAAA,WAAaW,EAAQqC,SAAU,CAClC,GAAqB,QAAjBrC,EAAQgC,MAAmC,SAAjBhC,EAAQgC,MAAoC,UAAjBhC,EAAQgC,KAAkB,CAGlF,IAAI6E,EAAejD,EAAO4C,MAAQzB,EAAMS,SACpCsB,EAAiBlD,EAAOmD,IAAIC,kBAAkB,oBAKlD,MAJqB,SAAjBhH,EAAQgC,MAAmB8E,IAC9BD,EAAaxC,GAAKC,EAAoBwC,SAEvC9G,EAAQqC,QAAQwE,GAIjB,GAAsB,MAAlBjD,EAAOM,OAAgB,CAC1B,IAAIoC,EAAejH,EAAAA,GAAAA,OAASW,EAAQ6D,eACpC7D,EAAQqC,QAAQsB,EAAoBC,EAAO4C,KAAMF,SAEjDtG,EAAQqC,QAAQuB,EAAO4C,YAvBpBnH,EAAAA,GAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMgE,MAkDTqD,CAAWnC,EAAQ9E,EAAS+E,EAAOC,IC1N3CkC,QDiOsB,SAAAzB,GAAQ,OAAI,SAAC5D,EAAQkD,EAAO/E,GAClD,IAAImH,EAAS,CAAEnF,KAAMqB,EAAUxB,IAAWA,GACtCuF,EAAgBrC,aAAiBU,EAAS4B,WA6B9C,GA3Be,WAAXxF,IAGCkD,EAAMuC,mBAETH,EAAOnF,KAAO,SACJ+C,EAAMwC,QAAWxC,EAAMyC,YAAczC,EAAMyC,WAAWD,UAEhEJ,EAAOnF,KAAO,QAKXhC,EAAQkC,MACZiF,EAAOjF,IAAM7C,EAAAA,GAAAA,OAAS0F,EAAO,QA7O/B,WACC,MAAM,IAAI0C,MAAM,kDA4OwBC,IAIpB,MAAhB1H,EAAQoC,OAAgB2C,GAAqB,WAAXlD,GAAkC,WAAXA,GAAkC,UAAXA,IACnFsF,EAAO/E,KAAOuF,KAAKC,UAAU5H,EAAQkF,OAASH,EAAMS,OAAOxF,KAIxC,aAAhBmH,EAAOnF,OACVmF,EAAOU,aAAc,GAGF,aAAhBV,EAAOnF,MAAuC,cAAhBmF,EAAOnF,KAAsB,CAC9D,IAAI6B,EAAgBkB,EAAMlB,eACrBA,GAAiBkB,EAAMA,QAE3BlB,EAAgBkB,EAAMA,MAAM+C,UAAUjE,eAEnCA,IACCxE,EAAAA,GAAAA,WAAawE,GAChBsD,EAAOtD,cAAgBA,EAAchE,KAAKkF,GAE1CoC,EAAOtD,cAAgBA,GAIzBsD,EAAOtD,cAAgBxE,EAAAA,GAAAA,OAAS8H,EAAOtD,eAAiB,GAAI7D,EAAQ6D,eAEhExE,EAAAA,GAAAA,YAAcW,EAAQoG,SAExBpG,EAAQoG,MADLgB,EACa,EAEA,GAMnB,IAAIxH,EAAQI,EAAQJ,MACpBI,EAAQJ,MAAQ,SAASmH,EAAKgB,EAAYC,GACzChI,EAAQ+H,WAAaA,EACrB/H,EAAQgI,YAAcA,EAClBpI,GACHA,EAAMC,KAAKG,EAAQiI,QAASlB,EAAKgB,EAAYC,IAK/C,IAAIjB,EAAM/G,EAAQ+G,IAAMtB,EAASI,QAAQxG,EAAAA,GAAAA,OAAS8H,EAAQnH,GAAU+E,GAEpE,OADAA,EAAMpD,QAAQ,UAAWoD,EAAOgC,EAAK/G,GAC9B+G,GCtSEG,CAAQzB,KAGlB,mBCVA,EAFejD,OAAO0F,YAAc,GCY9BC,EAAUC,EAAAA,MAAAA,OAAa,CAC5BC,SAAU,CACTC,SAAU,GACVC,YAAa,GACbC,QAAS,GACTC,cAAc,EACdC,eAAe,EACfC,gBAAgB,GAMjBC,WAAY,WAEwB,IAA/B1J,KAAK2J,IAAI,WAAW3H,OACvBhC,KAAK4J,IAAI,gBAAgB,GACgB,IAA/B5J,KAAK2J,IAAI,WAAW3H,QAC9BhC,KAAK4J,IAAI,iBAAiB,GAC1B5J,KAAK4J,IAAI,eAAgB5J,KAAK2J,IAAI,WAAW,KAE7C3J,KAAK4J,IAAI,kBAAkB,MASxBC,EAAoB1B,EAAAA,WAAAA,OAAkB,CAC3CtC,MAAOoD,IAOFa,EAAmBC,EAAAA,KAAAA,OAAY,CAGpCC,iBAAa5J,EAGb6J,UAAW,GAMXP,WAAY,SAAS5I,GACpBd,KAAKgK,YAAclJ,EAAQwH,YAM5B4B,OAAQ,WACP,IAAIC,EAAOnK,KAcX,OAbAmK,EAAK5H,IAAI1B,KAAK,IACdsJ,EAAKF,UAAY,GAEjBE,EAAKH,YAAYI,SAAQ,SAASC,GACjC,IAAIC,EAAO,IAAIC,EAAqB,CACnC1E,MAAOwE,IAERC,EAAKJ,SACLC,EAAK5H,IAAIiI,OAAOF,EAAK/H,KACrB+H,EAAKG,GAAG,oBAAqBN,EAAKO,yBAA0BP,GAC5DA,EAAKF,UAAUU,KAAKL,MAGdH,GASRO,yBAA0B,SAASE,GAClC5K,KAAKiK,UAAUG,SAAQ,SAASS,GAC/BA,EAAKpI,QAAQ,2BAA4BmI,SAStCL,EAAuBR,EAAAA,KAAAA,OAAY,CAGxCe,UAAW,UAGXC,eAAW3K,EAGX4K,YAAQ5K,EAGR6K,kBAAkB,EAElBC,OAAQ,CACP,mBAAoB,wBAGrBC,gBAAiBC,EAAQ,OAMzBC,SAAU,SAASnI,GAClB,OAAOlD,KAAKmL,gBAAgBjI,IAO7BwG,WAAY,SAAS5I,GACpBd,KAAKgL,OAASlK,EAAQ+E,MACtB7F,KAAKyK,GAAG,2BAA4BzK,KAAKsL,yBAA0BtL,OAMpEkK,OAAQ,WAcP,OAbAlK,KAAKuC,IAAI1B,KAAKb,KAAKqL,SAAS,CAC3BhB,QAASrK,KAAKgL,OAAO1E,YAEtBtG,KAAKuL,iBAGLvL,KAAKM,EAAE,cAAckL,iBAAiBxL,KAAKgL,OAAOrB,IAAI,aAGtD3J,KAAKM,EAAE,eAAemL,QAAQ,CAAEC,UAAW,SAE3C1L,KAAKM,EAAE,kBAAkBmL,QAAQ,CAAEC,UAAW,SAEvC1L,MASR2L,qBAAsB,WACrB3L,KAAKiL,kBAAoBjL,KAAKiL,iBAC1BjL,KAAKiL,iBACRjL,KAAKM,EAAE,SAASe,OAEhBrB,KAAKM,EAAE,SAASL,OAEjBD,KAAKyC,QAAQ,oBAAqBzC,KAAKuC,MAQxC+I,yBAA0B,SAASV,GAC9B5K,KAAKuC,IAAIqJ,GAAGhB,KAIhB5K,KAAKiL,kBAAmB,EACxBjL,KAAKM,EAAE,SAASL,WAQZ4L,EAAmB9B,EAAAA,KAAAA,OAAY,CAGpC+B,sBAAkB1L,EAGlB2L,oBAAgB3L,EAGhB4L,sBAAkB5L,EAGlB6L,uBAAmB7L,EAGnB8L,eAAW9L,EAGX+L,YAAa,GAEbjB,OAAQ,CACP,6BAA8B,aAG/BkB,UAAW,CACVC,QAASjB,EAAQ,OACjB1K,MAAO0K,EAAQ,OACfkB,KAAMlB,EAAQ,OACdmB,KAAMnB,EAAQ,QAMfoB,UAAWrM,EAAAA,GAAAA,UAAW,SAASsM,GAC9B,IAAIC,EAAa1M,KAAKM,EAAE,wBAAwBqM,MAK5CD,IAAe1M,KAAKmM,cACvBnM,KAAKyC,QAAQ,SAAUzC,KAAKM,EAAE,wBAAwBqM,OACtD3M,KAAKmM,YAAcO,KAElB,KAMHE,gBAAiB,SAAS1J,GACzB,OAAOlD,KAAKoM,UAAUC,QAAQnJ,IAO/B2J,cAAe,SAAS3J,GACvB,OAAOlD,KAAKoM,UAAU1L,MACrBP,EAAAA,GAAAA,OAAS,CACR2M,iBAAkB3K,EAAE,OAAQ,iCAC1Be,KAQL6J,gBAAiB,SAAS7J,GACzB,OAAOlD,KAAKoM,UAAUE,KACrBnM,EAAAA,GAAAA,OAAS,CACR6M,mBAAoB7K,EAAE,OAAQ,sBAC5Be,KAQL+J,iBAAkB,SAAS/J,GAC1B,OAAOlD,KAAKoM,UAAUG,KACrBpM,EAAAA,GAAAA,OAAS,CACR+M,oBAAqB/K,EAAE,OAAQ,qBAC/BgL,oBAAqBhL,EAAE,OAAQ,uBAC/BiL,oBAAqBjL,EAAE,OAAQ,6BAC7Be,KAQLwG,WAAY,SAAS5I,GACpBd,KAAKc,QAAUA,GAOhBuM,YAAa,SAAS/L,GACrBtB,KAAKkK,SACLlK,KAAKkM,eAAY9L,EACjBJ,KAAKM,EAAE,YAAYO,KAAKb,KAAK4M,gBAAgB,CAC5CU,YAAahM,MAOfiM,UAAW,WACVvN,KAAKkK,SACLlK,KAAKkM,eAAY9L,EACjBJ,KAAKM,EAAE,YAAYO,KAAKb,KAAK6M,kBAQ9BW,aAAc,SAASC,EAAUf,GAChC1M,KAAKkM,UAAYuB,EAASC,SAC1B1N,KAAKkK,OAAO,CACXwD,SAAUD,EAASC,WAGpB,IAAInB,EAAO,IAAIzC,EAAiB,CAC/BxB,WAAYmF,EAASC,WAEtBnB,EAAKrC,SACLlK,KAAKM,EAAE,YAAYO,KAAKb,KAAKiN,iBAAiB,CAC7CS,SAAUD,EAASC,SACnBhB,WAAYA,EACZiB,mBAAoBF,EAASE,mBAC7BC,eAAgB/K,GAAAA,YAAe,kBAC/BgL,cAAehL,GAAAA,cACfiL,mBAAoBjL,GAAAA,YAAe,qCAEpC7C,KAAKM,EAAE,0BAA0BO,KAAK0L,EAAKhK,MAO5C2H,OAAQ,SAAShH,GAChB,IAAI6K,EAAY/N,KAAKM,EAAE,wBAAwBqM,MAM/C,OALA3M,KAAKuC,IAAI1B,KAAKb,KAAK+M,gBAAgB7J,IAGnClD,KAAKM,EAAE,wBAAwBqM,IAAIoB,GACnC/N,KAAKM,EAAE,wBAAwB0N,QACxBhO,QAYHiO,EAAe,SAASnN,GAC7Bd,KAAK0J,WAAW5I,IAGjBmN,EAAarF,UAAY,CAExBrG,SAAKnC,EAGL8N,eAAW9N,EAGX+N,WAAO/N,EAGPgO,sBAAkBhO,EAQlBsJ,WAAY,SAAS5I,GACpBd,KAAKuC,IAAMzB,EAAQuN,GACnBrO,KAAKkO,UAAYpN,EAAQ2B,QAEzBzC,KAAKmO,MAAQ,IAAItC,EAAiB,CACjCwC,GAAIrO,KAAKuC,MAEVvC,KAAKmO,MAAM1D,GAAG,UAAU,SAASiC,GAChC1M,KAAKsO,cAAc5B,KACjB1M,MAEH6C,GAAAA,aAAgB7C,KAAKkO,UAAWlO,KAAKuC,IAAK,WACzCvC,KAAKuO,mBAAkB,IACtBnL,KAAKpD,OAAO,GACdA,KAAKuC,IAAIkI,GAAG,aAAc,WACzBzK,KAAKuO,mBAAkB,IACtBnL,KAAKpD,QAQRuO,kBAAmB,SAASlN,GAC3B,OAAIA,EACIrB,KAAKsO,iBAEZtO,KAAKuC,IAAI1B,KAAK,IACP2N,QAAQC,YASjBC,aAAc,SAAShC,GACtB,IAAI1J,EAAMH,GAAAA,YAAe,0BACzB,OAAO2L,QAAQC,QAAQnO,IAAAA,KAAO0C,EAAK,CAClCL,OAAQ,OACRO,KAAM,CACLyL,OAAQjC,OASX4B,cAAe,SAAS5B,GACvB,IAAIvC,EAAOnK,KAaX,OAXKmK,EAAKiE,mBACTjE,EAAKiE,iBAAmBjE,EAAKuE,aAAahC,IAGvCvM,EAAAA,GAAAA,YAAcuM,IAA8B,KAAfA,EAChCvC,EAAKgE,MAAMd,YAAYlL,EAAE,OAAQ,4BAEjCgI,EAAKgE,MAAMd,YAAYlL,EAAE,OAAQ,uBAAwB,CACxDyM,KAAMlC,KAGDvC,EAAKiE,iBAAiB/H,MAAK,SAASnD,GAE1CA,EAAKwK,SAAW,IAAI7D,EAAkB3G,EAAKwK,UAE3CvD,EAAKgE,MAAMX,aAAatK,EAAMwJ,MAC5B,SAASD,GACXtC,EAAKgE,MAAMZ,YACX9M,QAAQC,MAAM,2CAA4C+L,MACxDpG,MAAK,kBAGA8D,EAAKiE,oBACVS,MAAMpO,QAAQC,MAAM0C,KAAKpD,SAI9B,QCtdM8O,EAASC,SACbC,qBAAqB,QAAQ,GAC7BC,aAAa,aACTC,EAAcH,SAClBC,qBAAqB,QAAQ,GAC7BC,aAAa,yBAEFE,OAAyB/O,IAAX0O,GAAuBA,wRCDlD,GAICM,OCXoBA,GAKpB,0GAAc,SACb3O,QAAQyF,KAAK,2ECCFmJ,EAAmB,SAACC,GAChC,MAAmB,UAAfA,EAAMxM,MAGS,YAAfwM,EAAMxM,MAAoC,UAAdwM,EAAM3L,2OCuBvC,ICzB4B4L,EAAQC,EAC/BC,EDwBCC,EAAU,CAEfC,eAAgB,GAChBC,WAAY,GAEZC,uBAAwB,EACxBC,qBAAsB,EACtBC,qBAAsB,EACtBC,0BAA2B,EAC3BC,uBAAwB,EAGxBC,eAAgB,EAShBC,MAAO,SAAS7O,EAAM8O,EAAOrQ,EAAUsQ,GACtCrQ,KAAKsQ,QACJhP,EACA8O,EACA,QACAV,EAAQa,UACRxQ,EACAsQ,IAUFG,KAAM,SAASlP,EAAM8O,EAAOrQ,EAAUsQ,GACrCrQ,KAAKsQ,QAAQhP,EAAM8O,EAAO,OAAQV,EAAQa,UAAWxQ,EAAUsQ,IAWhEI,QAAS,SAASnP,EAAM8O,EAAOrQ,EAAUsQ,GACxC,OAAOrQ,KAAKsQ,QACXhP,EACA8O,EACA,SACAV,EAAQC,eACR5P,EACAsQ,IAYFK,mBAAoB,SAASpP,EAAM8O,EAAOO,EAAS5Q,EAAUsQ,GAC5D,OAAOrQ,KAAKsQ,QACXhP,EACA8O,EACA,OACAO,EACA5Q,OACUK,IAAViQ,GAA6BA,IAW/BO,YAAa,SAAStP,EAAM8O,EAAOrQ,EAAUsQ,GAC5C,OAAOrQ,KAAKsQ,QACXhP,EACA8O,EACA,SACAV,EAAQC,eACR5P,EACAsQ,GACA,IAaFQ,OAAQ,SAASvP,EAAM8O,EAAOrQ,EAAUsQ,EAAOS,EAAMC,GACpD,OAAOzQ,IAAAA,KAAON,KAAKgR,uBAAuB3K,MAAK,SAAS4K,GACvD,IAAIC,EAAa,aAAexB,EAAQQ,eAAiB,WACrDiB,EAAW,IAAMD,EACjBE,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPE,QAAShP,EACTwB,KAAM,WAEHyO,EAAQjR,GAAAA,CAAE,YACdiR,EAAMC,KAAK,OAAQT,EAAW,WAAa,QAAQS,KAAK,KAAMN,EAAa,UAAUM,KAAK,cAAeV,GACzG,IAAIW,EAAQnR,GAAAA,CAAE,YAAYkR,KAAK,MAAON,EAAa,UAAU5P,KAAKwP,EAAO,MACzEM,EAAK5G,OAAOiH,GACZL,EAAK5G,OAAO+G,QACEnR,IAAViQ,IACHA,GAAQ,GAET/P,GAAAA,CAAE,QAAQkK,OAAO4G,QAKAhR,IAAbL,IACHA,EAAWI,EAAAA,GAAAA,KAAOJ,IAGnB,IAAI2R,EAAa,CAAC,CACjBpQ,KAAMa,EAAE,OAAQ,MAChBwP,MAAO,gBACWvR,IAAbL,GAEHA,GAAS,EAAOwR,EAAM5E,OAEvBrM,GAAAA,CAAE6Q,GAAUS,SAAS,WAEpB,CACFtQ,KAAMa,EAAE,OAAQ,OAChBwP,MAAO,gBACWvR,IAAbL,GAEHA,GAAS,EAAMwR,EAAM5E,OAEtBrM,GAAAA,CAAE6Q,GAAUS,SAAS,UAEtBC,eAAe,IAGhBvR,GAAAA,CAAE6Q,GAAUS,SAAS,CACpBE,eAAe,EACfzB,MAAOA,EACPM,QAASe,EACTK,MAAO,gBAEW3R,IAAbL,GAEHA,GAAS,EAAOwR,EAAM5E,UAIzB4E,EAAMvD,QACN0B,EAAQQ,qBAuBV8B,WAAY,SAAS5B,EAAOrQ,EAAUkS,EAAaC,EAAgB7B,EAAOvN,EAAMqP,EAAMrR,GACrF,IAAIqJ,EAAOnK,KAKX,GAHAA,KAAKgS,WAAWI,UAAY,OAC5BpS,KAAKgS,WAAWK,UAAY,OAExBrS,KAAKgS,WAAW3F,QAApB,MAIajM,IAAT0C,IACHA,EAAO9C,KAAK6P,wBAGb,IAAIyC,EAAYnQ,EAAE,OAAQ,oBACtBoQ,EAAUpQ,EAAE,QAAS,cACrBW,IAAS9C,KAAK+P,sBAAwBjN,IAAS9C,KAAK8P,sBAAwBhN,IAAS9C,KAAKgQ,4BAC7FsC,EAAYnQ,EAAE,OAAQ,+BAGvBnC,KAAKgS,WAAW3F,SAAU,EAC1BrM,KAAKgS,WAAWQ,YAAeC,EAAIC,SAAWD,EAAIC,QAAQC,WAAaF,EAAIC,QAAQC,UAAUC,SAAYH,EAAIC,QAAQC,UAAUC,SAASJ,YAAc3P,GAAAA,MAAAA,YAEtJ7C,KAAK6S,SAAW,KAChBV,EAAOA,GAAQ,GACfrR,EAAU2F,OAAOC,OAAO,CACvBoM,uBAAuB,GACrBhS,GAEHR,IAAAA,KAAON,KAAK+S,0BAA0B1M,MAAK,SAAS4K,GACnD9G,EAAK6H,WAAW3F,SAAU,EAEtBlC,EAAK6I,aACR7I,EAAK6I,YAAYpB,SAAS,SAGvBM,MAAAA,IACHA,EAAiB,IAEc,iBAApBA,IACXA,EAAiB,CAACA,IAGnB/H,EAAK6I,YAAc/B,EAAMI,WAAW,CACnCC,YAbgB,+BAchBlB,MAAOA,EACP6C,UAAWX,EACXY,QAASX,EACTY,QAAShR,EAAE,OAAQ,QACnBiR,QAASjR,EAAE,OAAQ,QACnBkR,YAAalR,EAAE,OAAQ,cACrBe,KAAK,OAAQiP,GAAMjP,KAAK,cAAe+O,GAAa/O,KAAK,WAAYgP,GAAgBhP,KAAK,wBAAyBpC,EAAQgS,uBAC/F,mBAApBhS,EAAQ6N,QAClBxE,EAAK6I,YAAY9P,KAAK,SAAUpC,EAAQ6N,aAG3BvO,IAAViQ,IACHA,GAAQ,QAEWjQ,IAAhB6R,IACHA,GAAc,GAGf3R,GAAAA,CAAE,QAAQgT,QAAQnJ,EAAK6I,aAEvB7I,EAAKoJ,cAAgBjT,GAAAA,CAAE,8BACvB6J,EAAKoJ,cAAc9I,GAAG,iBAAiB,SAAS6E,GAC3CD,EAAiBC,IACpBnF,EAAKqJ,uBAGPrJ,EAAKsJ,mBAEL,IAAIC,EAAYvJ,EAAK6I,YAAYjR,KAAK,kCAClCe,IAASqH,EAAK0F,wBAA2B/O,EAAQgS,uBACpD3I,EAAK6I,YAAYjR,KAAK,sBAAsB9B,OAE7CyT,EAAUjJ,GAAG,SAAS,WACrBN,EAAK6I,YAAYpB,SAAS,oBAAoB,SAAStC,GACtDA,EAAMqE,2BACNrE,EAAMsE,iBACNF,EAAU/B,cAGZ+B,EAAUjJ,GAAG,QAAQ,WACpBN,EAAK6I,YAAYpB,SAAS,yBAG3B/O,GAAAA,aAAgB6Q,EAAWvJ,EAAK6I,YAAYjR,KAAK,UAAU,WAC1D8R,EAAOpI,QAAQ,QACfoI,EAAO7F,QACP7D,EAAK6I,YAAYpB,SAAS,oBAAoB,SAAStC,GACtDA,EAAMqE,2BACNrE,EAAMsE,iBACNzJ,EAAK6I,YAAYc,YAElB,IAAIC,EAAUF,EAAOlH,MACjBqH,EAAUD,EAAQE,YAAY,MACjB,IAAbD,IACHA,EAAUD,EAAQ/R,QAEnB6R,EAAOK,YAAY,EAAGF,MAEvB,IAAIG,EAAQhK,EAAK6I,YAAYjR,KAAK,iBAC9B8R,EAASM,EAAMpS,KAAK,sBACpBqS,EAAUD,EAAMpS,KAAK,wBACzB8R,EAAOpJ,GAAG,WAAW,SAAS6E,GACzBD,EAAiBC,KACpBA,EAAMqE,2BACNrE,EAAMsE,iBACNO,EAAML,aAGRM,EAAQ3J,GAAG,SAAS,SAAS6E,GAC5BA,EAAMqE,2BACNrE,EAAMsE,iBACNO,EAAML,YA0DPK,EAAM1J,GAAG,UAAU,SAAS6E,GAI3B,GAHAA,EAAM+E,kBACN/E,EAAMsE,iBA9BU,WAChB,IAAIU,EAAWT,EAAOlH,MACtB,IACC,GAnBoB,SAAUmE,GAC/B,IAAIyD,EAAczD,EAAK0D,OACvB,GAAoB,MAAhBD,GAAuC,OAAhBA,EAE1B,MAAMpS,EAAE,QAAS,oCAAqC,CAAC2O,KAAMA,IACvD,GAA2B,IAAvByD,EAAYvS,OACtB,MAAMG,EAAE,QAAS,8BACX,IAAkC,IAA9BoS,EAAYjP,QAAQ,KAC9B,MAAMnD,EAAE,QAAS,0CACX,GAAOoS,EAAYE,MAAM5R,GAAAA,OAAAA,uBAC/B,MAAMV,EAAE,QAAS,sCAAuC,CAAC2O,KAAMA,IAGhE,OAAO,EAMD4D,CAAgBJ,GAEd,IAAInK,EAAK0I,SAAS9Q,MAAK,SAAS4S,GACtC,OAAOA,EAAK7D,OAAS9Q,OACnBsU,GACF,MAAMnS,EAAE,QAAS,2BAA4B,CAAE4R,QAASO,QAAYlU,EAAW,CAC9EwU,QAAQ,IAGT,OAAO,GAEP,MAAOlU,GACRmT,EAAOrC,KAAK,QAAS9Q,GACrBmT,EAAOpI,QAAQ,CACdC,UAAW,QACXjJ,QAAS,SACT,UAAa,mBAEdoR,EAAOpI,QAAQ,aACfoI,EAAOpI,QAAQ,QACfoI,EAAOnR,SAAS,SAEjB,OAAO,EAOHmS,GAAc,CACjB,IAAIC,EAAUjB,EAAOlH,MACrBxC,EAAK6H,WAAWQ,YAAYuC,gBAAgB5K,EAAK6I,YAAY9P,KAAK,QAAU,IAAM4R,GAASE,QAAO,SAAUhQ,GAC3GmF,EAAK8K,gBAAgB9K,EAAK6I,YAAY9P,KAAK,QAAU,IAAM4R,MAE5DjS,GAAAA,YACAsH,EAAK6I,YAAYpB,SAAS,sBAC1BzH,EAAK6I,YAAYrB,QACjBkC,EAAOlH,IAAI4F,OAGbsB,EAAOpJ,GAAG,SAAS,SAAS6E,GAC3BuE,EAAOpI,QAAQ,WAGhBtB,EAAK6I,YAAYkC,OAAM,WACtB/K,EAAKgL,gBAAkBhL,EAAK6I,YAAYjR,KAAK,sBAC7CoI,EAAKiL,UAAYjL,EAAK6I,YAAYjR,KAAK,mBACvCoI,EAAKkL,mBAAqBlL,EAAK6I,YAAYjR,KAAK,uBAChDoI,EAAKmL,SAAWnL,EAAK6I,YAAYjR,KAAK,YACtCoI,EAAKmL,SAAS7K,GAAG,gBAAiB,uBAAwBN,GAAM,SAASmF,GACpED,EAAiBC,IACpBnF,EAAKoL,sBAAsBjG,EAAOxM,MAGpCqH,EAAKiL,UAAU3K,GAAG,gBAAiB,MAAM,SAAS6E,GAC7CD,EAAiBC,IACpBnF,EAAKqL,mBAAmBlG,EAAOhP,GAAAA,CAAEN,MAAO8C,MAG1CqH,EAAKgL,gBAAgB1K,GAAG,gBAAiB,KAAK,SAAS6E,GACtD,GAAID,EAAiBC,GAAQ,CAC5B,IAAImG,EAAMtL,EAAK6I,YAAY9P,KAAK,QAChCiH,EAAK6H,WAAWI,UAAY9R,GAAAA,CAAEgP,EAAMoG,eAAexS,KAAK,QACxDiH,EAAK6H,WAAWK,UAA0C,QAA9BlI,EAAK6H,WAAWK,UAAsB,OAAS,MAC3ElI,EAAK8K,gBAAgBQ,OAGvBtL,EAAK8K,gBAAgB9C,MAItB,IAAIwD,EAAiB,SAASC,GAC7B,QAAiBxV,IAAbL,EAAwB,CAC3B,IAAI8V,EACJ,IAAoB,IAAhB5D,EACH4D,EAAW,GACX1L,EAAKiL,UAAUrT,KAAK,kCAAkC1B,MAAK,SAASyV,EAAOC,GAC1EF,EAASlL,KAAKR,EAAK6I,YAAY9P,KAAK,QAAU,IAAM5C,GAAAA,CAAEyV,GAAS7S,KAAK,qBAE/D,CACN2S,EAAW1L,EAAK6I,YAAY9P,KAAK,QACjC,IAAI8S,EAAe7L,EAAKiL,UAAUrT,KAAK,kCAAkCmB,KAAK,aAC1E8S,IACHH,GAAY,IAAMG,GAGpBjW,EAAS8V,EAAUD,GACnBzL,EAAK6I,YAAYpB,SAAS,WAgBxBF,EAAa,GACb5O,IAAS4M,EAAQG,uBACpB6B,EAAW/G,KAAK,CACfrJ,KAAMa,EAAE,OAAQ,UAChBwP,MAhBmB,WACpBgE,EAAejG,EAAQG,yBAgBtBgC,eAAe,IAEN/O,IAAS4M,EAAQO,uBAC3BnP,EAAQ6P,QAAQvG,SAAQ,SAAS6L,GAChCvE,EAAW/G,KAAK,CACfrJ,KAAM2U,EAAO3U,KACbqQ,MAAO,WACNgE,EAAeM,EAAOnT,OAEvB+O,cAAeoE,EAAOpE,oBAIpB/O,IAAS4M,EAAQK,sBAAwBjN,IAAS4M,EAAQM,2BAC7D0B,EAAW/G,KAAK,CACfrJ,KAAMa,EAAE,OAAQ,QAChBwP,MA7BgB,WAClBgE,EAAejG,EAAQK,uBA6BrB8B,eAAe,IAGb/O,IAAS4M,EAAQI,sBAAwBhN,IAAS4M,EAAQM,2BAC7D0B,EAAW/G,KAAK,CACfrJ,KAAMa,EAAE,OAAQ,QAChBwP,MAhCgB,WAClBgE,EAAejG,EAAQI,uBAgCrB+B,eAAe,KAKlB1H,EAAK6I,YAAYpB,SAAS,CACzBE,eAAe,EAEfoE,MAAO,IACPC,OAAQ,IACR9F,MAAOA,EACPM,QAASe,EACT0E,MAAO,CACNzF,QAAS,SAEVoB,MAAO,WACN,IACCzR,GAAAA,CAAEN,MAAM4R,SAAS,WAAWyE,SAC3B,MAAO5J,IAETtC,EAAK6I,YAAc,QAMrB,IACIsD,EADcnM,EAAK6I,YAAYuD,QAAQ,cACLxU,KAAK,aACgC,IAAvEoI,EAAK6I,YAAY9P,KAAK,YAAYoC,QAAQ,yBAAkC6E,EAAK6I,YAAY9P,KAAK,yBACrGoT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,MAGrCC,MAAK,SAASzR,EAAQtE,GAGtByJ,EAAK6H,WAAW3F,SAAU,EACX,IAAXrH,GACHmL,MAAMhO,EAAE,OAAQ,8CAA+C,CAAEzB,MAAOA,UAQ5E4P,QAAS,SAASoG,EAAStG,EAAOuG,EAAYhG,EAAS5Q,EAAUsQ,EAAOuG,GACvE,OAAOtW,IAAAA,KAAON,KAAKgR,uBAAuB3K,MAAK,SAAS4K,GACvD,IAAIC,EAAa,aAAexB,EAAQQ,eAAiB,WACrDiB,EAAW,IAAMD,EACjBE,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPE,QAASoG,EACT5T,KAAM6T,GACJC,EAAY,CAAEC,eAAgB,IAAO,SAC1BzW,IAAViQ,IACHA,GAAQ,GAET/P,GAAAA,CAAE,QAAQkK,OAAO4G,GACjB,IAAIM,EAAa,GACjB,OAAQf,GACR,KAAKjB,EAAQC,eACZ+B,EAAa,CAAC,CACbpQ,KAAMa,EAAE,OAAQ,MAChBwP,MAAO,gBACWvR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE6Q,GAAUS,SAAS,WAGvB,CACCtQ,KAAMa,EAAE,OAAQ,OAChBwP,MAAO,gBACWvR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE6Q,GAAUS,SAAS,UAEtBC,eAAe,IAEhB,MACD,KAAKnC,EAAQa,UAOZmB,EAAW,GAAK,CACfpQ,KAAMa,EAAE,OAAQ,MAChBwP,MARoB,WACpBrR,GAAAA,CAAE6Q,GAAUS,SAAS,cACJxR,IAAbL,GACHA,KAMD8R,eAAe,GAEhB,MACD,QACyB,WAApB,EAAOlB,IACFA,EAAQ7N,OACV4M,EAAQC,iBACZ+B,EAAa,CAAC,CACbpQ,KAAMqP,EAAQmG,QAAU3U,EAAE,OAAQ,MAClCwP,MAAO,gBACWvR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE6Q,GAAUS,SAAS,WAGtB,CACCtQ,KAAMqP,EAAQF,SAAWtO,EAAE,OAAQ,OACnCwP,MAAO,gBACWvR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE6Q,GAAUS,SAAS,UAEtBC,eAAe,EACfkF,QAASpG,EAAQqG,kBAQvB1W,GAAAA,CAAE6Q,GAAUS,SAAS,CACpBE,eAAe,EACfmF,cAAe,WAAQlX,GAAYA,GAAS,IAC5CsQ,MAAOA,EACPM,QAASe,IAEVhC,EAAQQ,oBAEPuG,MAAK,SAASzR,EAAQtE,GAGP,IAAXsE,EACHmL,MAAMC,EAAQ,KAAOsG,GAErBvG,MAAMhO,EAAE,OAAQ,0CAA2C,CAAEzB,MAAOA,SAIxEwW,kBAAkB,EASlBC,WAAY,SAASjU,EAAMkU,EAAUC,EAAaC,GACjD,IAAInN,EAAOnK,KACPuX,EAAiB,IAAIjX,IAAAA,UAkErBkX,EAAkB,SAASC,EAAQC,EAAGC,EAAGC,EAAIC,GAChDD,EAAKE,KAAKC,MAAMH,GAChBC,EAAKC,KAAKC,MAAMF,GAUhB,IATA,IAAIG,EAAMP,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGR,EAAGC,GACpDQ,EAAOV,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGN,EAAIC,GACtD3U,EAAO8U,EAAI9U,KACXkV,EAAQD,EAAKjV,KACbmV,EAAUX,EAAIE,EACdU,EAAUX,EAAIE,EACdU,EAAeT,KAAKU,KAAKH,EAAU,GACnCI,EAAeX,KAAKU,KAAKF,EAAU,GAE9BI,EAAI,EAAGA,EAAIb,EAAIa,IACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIf,EAAIe,IAAK,CAU5B,IATA,IAAIC,EAAoB,GAAdD,EAAID,EAAId,GACdiB,EAAS,EACTC,EAAU,EACVC,EAAgB,EAChBC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,GAAYV,EAAI,IAAOJ,EAClBe,EAAKvB,KAAKwB,MAAMZ,EAAIJ,GAAUe,GAAMX,EAAI,GAAKJ,EAASe,IAI9D,IAHA,IAAIE,EAAKzB,KAAK0B,IAAIJ,GAAYC,EAAK,KAAQZ,EACvCgB,GAAYd,EAAI,IAAON,EACvBqB,EAAKH,EAAKA,EACLI,EAAK7B,KAAKwB,MAAMX,EAAIN,GAAUsB,GAAMhB,EAAI,GAAKN,EAASsB,IAAM,CACpE,IAAIC,EAAK9B,KAAK0B,IAAIC,GAAYE,EAAK,KAAQpB,EACvCsB,EAAI/B,KAAKgC,KAAKJ,EAAKE,EAAKA,GACxBC,IAAM,GAAKA,GAAK,IAEnBhB,EAAS,EAAIgB,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAI,GACxB,IAGZV,GAAQN,EAAS3V,EAAU,GAF3B0W,EAAK,GAAKD,EAAKN,EAAK3B,KAGpBqB,GAAiBF,EAEb3V,EAAK0W,EAAK,GAAK,MAAOf,EAASA,EAAS3V,EAAK0W,EAAK,GAAK,KAC3DZ,GAAQH,EAAS3V,EAAK0W,GACtBX,GAAQJ,EAAS3V,EAAK0W,EAAK,GAC3BV,GAAQL,EAAS3V,EAAK0W,EAAK,GAC3Bd,GAAWD,GAKfT,EAAMQ,GAAMI,EAAOF,EACnBV,EAAMQ,EAAK,GAAKK,EAAOH,EACvBV,EAAMQ,EAAK,GAAKM,EAAOJ,EACvBV,EAAMQ,EAAK,GAAKO,EAAOJ,EAGzBtB,EAAOQ,WAAW,MAAM8B,UAAU,EAAG,EAAGjC,KAAKkC,IAAItC,EAAGE,GAAKE,KAAKkC,IAAIrC,EAAGE,IACrEJ,EAAOvB,MAAQ0B,EACfH,EAAOtB,OAAS0B,EAChBJ,EAAOQ,WAAW,MAAMgC,aAAa9B,EAAM,EAAG,IAG3C+B,EAAc,SAASC,EAAY/C,EAAUC,GAEhD,IAAI+C,EAAYD,EAAWpY,KAAK,aAAasY,QAAQ7X,YAAY,YAAYE,SAAS,YAClF4X,EAAeF,EAAUrY,KAAK,aAC9BwY,EAAkBH,EAAUrY,KAAK,gBAErCqY,EAAUlX,KAAK,OAAQA,GAEvBkX,EAAUrY,KAAK,aAAaT,KAAK8V,EAAStG,MAC1CwJ,EAAavY,KAAK,SAAST,KAAKuB,GAAAA,KAAAA,cAAsBuU,EAASoD,OAC/DF,EAAavY,KAAK,UAAUT,KAAKuB,GAAAA,KAAAA,WAAmBuU,EAASqD,QAEzDpD,EAAYmD,MAAQnD,EAAYqD,eACnCH,EAAgBxY,KAAK,SAAST,KAAKuB,GAAAA,KAAAA,cAAsBwU,EAAYmD,OACrED,EAAgBxY,KAAK,UAAUT,KAAKuB,GAAAA,KAAAA,WAAmBwU,EAAYqD,gBAEpE,IAAIvI,EAAOiF,EAASuD,UAAY,IAAMvD,EAAStG,KAC3C8J,EAAU,CACbjG,KAAMxC,EACN0I,EAAG,GACHC,EAAG,GACHC,EAAG3D,EAAS4D,KACZC,UAAW,GAERC,EAAcC,MAAMC,mBAAmBR,GAE3CM,EAAcA,EAAYG,QAAQ,KAAM,OACxCf,EAAavY,KAAK,SAASuZ,IAAI,CAAE,mBAAoB,QAAUJ,EAAc,OAvJtD,SAASvG,GAChC,IAAIlV,EAAW,IAAIa,IAAAA,UAEfwC,EAAO6R,EAAK7R,MAAQ6R,EAAK7R,KAAKtB,MAAM,KAAK+F,QAC7C,GAAIjE,OAAOiY,YAAuB,UAATzY,EAAkB,CAC1C,IAAI0Y,EAAS,IAAID,WACjBC,EAAOC,OAAS,SAAShP,GACxB,IAAIiP,EAAO,IAAIC,KAAK,CAAClP,EAAEmP,OAAOlX,SAC9BpB,OAAOuY,IAAMvY,OAAOuY,KAAOvY,OAAOwY,UAClC,IAAIC,EAAczY,OAAOuY,IAAIG,gBAAgBN,GACzCO,EAAQ,IAAIC,MAChBD,EAAME,IAAMJ,EACZE,EAAMR,OAAS,WACd,IAWgBzD,EAKf6C,EAAOC,EAAON,EAJd/C,EAEAvB,EACAC,EAfGnT,GAWYgV,EAXDiE,EAYdxE,EAAS1I,SAASqN,cAAc,UAEhClG,EAAQ8B,EAAI9B,MACZC,EAAS6B,EAAI7B,OAIbD,EAAQC,GACX2E,EAAI,EACJD,GAAK3E,EAAQC,GAAU,IAEvB2E,GAAK3E,EAASD,GAAS,EACvB2E,EAAI,GAELL,EAAO1C,KAAKuE,IAAInG,EAAOC,GAGvBsB,EAAOvB,MAAQsE,EACf/C,EAAOtB,OAASqE,EACN/C,EAAOQ,WAAW,MACxBqE,UAAUtE,EAAK6C,EAAGC,EAAGN,EAAMA,EAAM,EAAG,EAAGA,EAAMA,GAGjDhD,EAAgBC,EAAQ+C,EAAMA,EAtBb,OAwBV/C,EAAO8E,UAAU,YAAa,KApClC9c,EAASgP,QAAQzL,KAGnBwY,EAAOgB,kBAAkB7H,QAEzBlV,EAASgd,SAEV,OAAOhd,EAmIPid,CAAkBrF,GAAahR,MAC9B,SAAS8L,GACRoI,EAAgBxY,KAAK,SAASuZ,IAAI,mBAAoB,OAASnJ,EAAO,QACpE,WACFA,EAAOtP,GAAAA,SAAAA,WAAuBwU,EAAYvU,MAC1CyX,EAAgBxY,KAAK,SAASuZ,IAAI,mBAAoB,OAASnJ,EAAO,QAIxE,IAAIwK,EAAaxC,EAAWpY,KAAK,aAAaC,OAC9CsY,EAAavY,KAAK,kBAAkByP,KAAK,KAAM,qBAAuBmL,GACtEpC,EAAgBxY,KAAK,kBAAkByP,KAAK,KAAM,wBAA0BmL,GAE5ExC,EAAW3P,OAAO4P,GAId/C,EAAYqD,aAAetD,EAASqD,MACvCF,EAAgBxY,KAAK,UAAUuZ,IAAI,cAAe,QACxCjE,EAAYqD,aAAetD,EAASqD,OAC9CH,EAAavY,KAAK,UAAUuZ,IAAI,cAAe,QAM5CjE,EAAYmD,MAAQnD,EAAYmD,KAAOpD,EAASoD,KACnDD,EAAgBxY,KAAK,SAASuZ,IAAI,cAAe,QACvCjE,EAAYmD,MAAQnD,EAAYmD,KAAOpD,EAASoD,MAC1DF,EAAavY,KAAK,SAASuZ,IAAI,cAAe,QASvB,aAApBlE,EAASpS,SACZsV,EACE5X,SAAS,YACTX,KAAK,0BACLyU,KAAK,WAAW,GAChBA,KAAK,YAAY,GACnB8D,EAAavY,KAAK,YAChBT,KAAKa,EAAE,OAAQ,gBAOf+O,EAAa,+BACbC,EAAW,IAAMD,EACrB,GAAIlR,KAAKkX,iBAAkB,CAG1B,IAAIiD,EAAa7Z,GAAAA,CAAE6Q,EAAW,eAC9B+I,EAAYC,EAAY/C,EAAUC,GAElC,IAAIuF,EAAQtc,GAAAA,CAAE6Q,EAAW,cAAcnP,OACnCoO,EAAQyM,EAAE,OACb,wBACA,yBACAD,EACA,CAAEA,MAAOA,IAEVtc,GAAAA,CAAE6Q,GAAU2L,SAASC,SAAS,oBAAoBzb,KAAK8O,GAGvD9P,GAAAA,CAAEgD,QAAQb,QAAQ,UAClB8U,EAAe9I,eAGfzO,KAAKkX,kBAAmB,EACxB5W,IAAAA,KAAON,KAAKgd,0BAA0B3W,MAAK,SAAS4K,GACnD,IAAIb,EAAQjO,EAAE,OAAQ,qBAClBiP,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPtN,KAAM,aAENma,YAAa9a,EAAE,OAAQ,aACvB+a,iBAAkB/a,EAAE,OAAQ,0BAE5Bgb,IAAKhb,EAAE,OAAQ,oCACfib,KAAMjb,EAAE,OAAQ,wFAIjB,GAFA7B,GAAAA,CAAE,QAAQkK,OAAO4G,GAEbgG,GAAYC,EAAa,CAC5B,IAAI8C,EAAa/I,EAAKrP,KAAK,cAC3BmY,EAAYC,EAAY/C,EAAUC,GAGnC,IAAI3F,EAAa,CAAC,CACjBpQ,KAAMa,EAAE,OAAQ,UAChB4U,QAAS,SACTpF,MAAO,gBAC6B,IAAxB2F,EAAW+F,UACrB/F,EAAW+F,SAASna,GAErB5C,GAAAA,CAAE6Q,GAAUS,SAAS,WAGvB,CACCtQ,KAAMa,EAAE,OAAQ,YAChB4U,QAAS,WACTpF,MAAO,gBAC+B,IAA1B2F,EAAWgG,YACrBhG,EAAWgG,WAAWhd,GAAAA,CAAE6Q,EAAW,eAEpC7Q,GAAAA,CAAE6Q,GAAUS,SAAS,YAIvBtR,GAAAA,CAAE6Q,GAAUS,SAAS,CACpBsE,MAAO,IACPpE,eAAe,EACfzB,OAAO,EACPM,QAASe,EACT6L,YAAa,KACbxL,MAAO,WACN5H,EAAK+M,kBAAmB,EACxB,IACC5W,GAAAA,CAAEN,MAAM4R,SAAS,WAAWyE,SAC3B,MAAO5J,QAMXnM,GAAAA,CAAE6Q,GAAUmK,IAAI,SAAU,QAE1B,IAAIkC,EAAiBpM,EAAKmF,QAAQ,cAAcxU,KAAK,mBAGrD,SAAS0b,IACR,IAAIC,EAAetM,EAAKrP,KAAK,gCAAgCC,OAC7Dwb,EAAehH,KAAK,WAA6B,IAAjBkH,GAJjCF,EAAehH,KAAK,YAAY,GAQhClW,GAAAA,CAAE6Q,GAAUpP,KAAK,gBAAgB0I,GAAG,SAAS,WAC1BnK,GAAAA,CAAE6Q,GAAUpP,KAAK,iDACvByU,KAAK,UAAWlW,GAAAA,CAAEN,MAAMwW,KAAK,eAE1ClW,GAAAA,CAAE6Q,GAAUpP,KAAK,qBAAqB0I,GAAG,SAAS,WAC/BnK,GAAAA,CAAE6Q,GAAUpP,KAAK,6DACvByU,KAAK,UAAWlW,GAAAA,CAAEN,MAAMwW,KAAK,eAE1ClW,GAAAA,CAAE6Q,GAAUpP,KAAK,cAAc0I,GAAG,QAAS,yCAAyC,WACnF,IAAIkT,EAAYrd,GAAAA,CAAEN,MAAM+B,KAAK,0BAC7B4b,EAAUnH,KAAK,WAAYmH,EAAUnH,KAAK,eAE3ClW,GAAAA,CAAE6Q,GAAUpP,KAAK,cAAc0I,GAAG,QAAS,uFAAuF,WACjI,IAAIkT,EAAYrd,GAAAA,CAAEN,MAClB2d,EAAUnH,KAAK,WAAYmH,EAAUnH,KAAK,eAI3ClW,GAAAA,CAAE6Q,GAAU1G,GAAG,QAAS,6BAA6B,WACpD,IAAImS,EAAQtc,GAAAA,CAAE6Q,GAAUpP,KAAK,yDAAyDC,OAClF4a,IAAUtc,GAAAA,CAAE6Q,EAAW,cAAcnP,QACxC1B,GAAAA,CAAE6Q,GAAUpP,KAAK,gBAAgByU,KAAK,WAAW,GACjDlW,GAAAA,CAAE6Q,GAAUpP,KAAK,yBAAyBT,KAAKa,EAAE,OAAQ,oBAC/Cya,EAAQ,GAClBtc,GAAAA,CAAE6Q,GAAUpP,KAAK,gBAAgByU,KAAK,WAAW,GACjDlW,GAAAA,CAAE6Q,GAAUpP,KAAK,yBAAyBT,KAAKa,EAAE,OAAQ,qBAAsB,CAAEya,MAAOA,OAExFtc,GAAAA,CAAE6Q,GAAUpP,KAAK,gBAAgByU,KAAK,WAAW,GACjDlW,GAAAA,CAAE6Q,GAAUpP,KAAK,yBAAyBT,KAAK,KAEhDmc,OAEDnd,GAAAA,CAAE6Q,GAAU1G,GAAG,QAAS,+BAA+B,WACtD,IAAImS,EAAQtc,GAAAA,CAAE6Q,GAAUpP,KAAK,sDAAsDC,OAC/E4a,IAAUtc,GAAAA,CAAE6Q,EAAW,cAAcnP,QACxC1B,GAAAA,CAAE6Q,GAAUpP,KAAK,qBAAqByU,KAAK,WAAW,GACtDlW,GAAAA,CAAE6Q,GAAUpP,KAAK,8BAA8BT,KAAKa,EAAE,OAAQ,oBACpDya,EAAQ,GAClBtc,GAAAA,CAAE6Q,GAAUpP,KAAK,qBAAqByU,KAAK,WAAW,GACtDlW,GAAAA,CAAE6Q,GAAUpP,KAAK,8BACfT,KAAKa,EAAE,OAAQ,qBAAsB,CAAEya,MAAOA,OAEhDtc,GAAAA,CAAE6Q,GAAUpP,KAAK,qBAAqByU,KAAK,WAAW,GACtDlW,GAAAA,CAAE6Q,GAAUpP,KAAK,8BAA8BT,KAAK,KAErDmc,OAGDlG,EAAe9I,aAEdgI,MAAK,WACLc,EAAekF,SACftM,MAAMhO,EAAE,OAAQ,0CAInB,OAAOoV,EAAeqG,WAGvBnK,iBAAkB,WACjB,IAAMtJ,EAAOnK,KACbM,IAAAA,IAAMuC,GAAAA,YAAe,oCAAoC,SAASsE,GACjEgD,EAAKoJ,cACH/Q,YAAY,6CACZE,SAASyE,EAAS0W,SAAW,uBAAyB,wBACxD1T,EAAKoJ,cAAc/B,KAClB,aACArK,EAAS0W,SAAW1b,EAAE,QAAS,kBAAoBA,EAAE,QAAS,mBAE/D7B,GAAAA,CAAE,mBAAmBwd,YAAY,YAAa3W,EAAS0W,cAGzDrK,kBAAmB,WAClB,IAAMuK,EAAa/d,KAAKuT,cAAcyK,SAAS,wBAE3Cnb,GAAAA,aACHvC,IAAAA,KAAOuC,GAAAA,YAAe,mCAAoC,CAAExB,MAAO0c,IAEpE/d,KAAKuT,cACH/Q,YAAY,6CACZE,SAASqb,EAAa,uBAAyB,wBACjD/d,KAAKuT,cAAc/B,KAClB,aACAuM,EAAa5b,EAAE,QAAS,kBAAoBA,EAAE,QAAS,mBAExD7B,GAAAA,CAAE,mBAAmBwd,YAAY,aAAcC,IAEhDhL,uBAAwB,WACvB,IAAIkL,EAAQ3d,IAAAA,WACZ,GAAKN,KAAKke,oBAWTD,EAAMxP,QAAQzO,KAAKke,yBAXW,CAC9B,IAAI/T,EAAOnK,KACXM,IAAAA,IAAMuC,GAAAA,SAAY,OAAQ,YAAa,oBAAoB,SAASsb,GACnEhU,EAAK+T,oBAAsB5d,GAAAA,CAAE6d,GAC7BhU,EAAKiU,UAAYjU,EAAK+T,oBAAoBnc,KAAK,kCAAkCsc,SACjFJ,EAAMxP,QAAQtE,EAAK+T,wBAElBzH,MAAK,SAAS6H,EAAOzV,EAAYC,GACjCmV,EAAMxB,OAAO6B,EAAMtZ,OAAQ8D,MAK9B,OAAOmV,EAAML,WAEd5M,oBAAqB,WACpB,IAAIiN,EAAQ3d,IAAAA,WACZ,GAAKN,KAAKue,iBAUTN,EAAMxP,QAAQzO,KAAKue,sBAVQ,CAC3B,IAAIpU,EAAOnK,KACXM,IAAAA,IAAMuC,GAAAA,SAAY,OAAQ,YAAa,iBAAiB,SAASsb,GAChEhU,EAAKoU,iBAAmBje,GAAAA,CAAE6d,GAC1BF,EAAMxP,QAAQtE,EAAKoU,qBAElB9H,MAAK,SAAS6H,EAAOzV,EAAYC,GACjCmV,EAAMxB,OAAO6B,EAAMtZ,OAAQ8D,MAK9B,OAAOmV,EAAML,WAEdZ,uBAAwB,WACvB,IAAIiB,EAAQ3d,IAAAA,WACZ,GAAKN,KAAKwe,oBAUTP,EAAMxP,QAAQzO,KAAKwe,yBAVW,CAC9B,IAAIrU,EAAOnK,KACXM,IAAAA,IAAMuC,GAAAA,SAAY,QAAS,YAAa,oBAAoB,SAASsb,GACpEhU,EAAKqU,oBAAsBle,GAAAA,CAAE6d,GAC7BF,EAAMxP,QAAQtE,EAAKqU,wBAElB/H,MAAK,WACLwH,EAAMxB,YAKT,OAAOwB,EAAML,WAEda,aAAc,SAAShJ,EAAKiJ,GAK3B,MAJ0B,iBAAdA,IACXA,EAAW,CAACA,IAGNpe,IAAAA,QACNuC,GAAAA,SAAY,QAAS,OAAQ,YAC7B,CACC4S,IAAKA,EACLkJ,UAAWlW,KAAKC,UAAUgW,MAQ7BzJ,gBAAiB,SAASQ,GACzB,IAAItL,EAAOnK,KACXA,KAAKoV,UAAUwJ,QACf5e,KAAKgT,YAAYjR,KAAK,iBAAiB9B,OACvCD,KAAKqV,mBAAmB3S,SAAS,gBACjC1C,KAAKgT,YAAY9P,KAAK,OAAQuS,GAC9B,IAAI9G,EAAS3O,KAAKgT,YAAY9P,KAAK,YAC/B2b,EAAiB7e,KAAKgT,YAAY9P,KAAK,UACnB,iBAAZyL,IACXA,EAAS,CAACA,IAEXxE,EAAKgL,gBAAgBpT,KAAK,mBAAmBW,SAAS,UAAUF,YAAY,mBAAmBA,YAAY,mBAC3G2H,EAAKgL,gBAAgBpT,KAAK,cAAgBoI,EAAK6H,WAAWI,UAAY,qBAAqB5P,YAAY,UACrE,QAA9B2H,EAAK6H,WAAWK,UACnBlI,EAAKgL,gBAAgBpT,KAAK,cAAgBoI,EAAK6H,WAAWI,UAAY,qBAAqB1P,SAAS,mBAEpGyH,EAAKgL,gBAAgBpT,KAAK,cAAgBoI,EAAK6H,WAAWI,UAAY,qBAAqB1P,SAAS,mBAErGyH,EAAK6H,WAAWQ,YAAYsM,kBAAkBrJ,GAAKpP,MAAK,SAASrB,EAAQ+Z,GACxE5U,EAAK0I,SAAWkM,EACZpQ,GAAUA,EAAO3M,OAAS,IAA8B,IAAzB2M,EAAOrJ,QAAQ,OACjDyZ,EAAQA,EAAMpQ,QAAO,SAASgG,GAC7B,MAAqB,QAAdA,EAAK7R,OAAqD,IAAnC6L,EAAOrJ,QAAQqP,EAAKqK,cAIhDH,IACHE,EAAQA,EAAMpQ,OAAOkQ,IAKtB,IAAMI,EAAkBlQ,SAASmQ,eAAe,mBACT,OAApBD,GAAsD,MAA1BA,EAAgBnb,QAE9Dib,EAAQA,EAAMpQ,QAAO,SAASgG,GAC7B,OAAQA,EAAK7D,KAAKqO,WAAW,SAI/B,IAAIC,EAAc,CACjBtO,KAAM,SAASuO,EAAWC,GACzB,MAAuB,QAAnBD,EAAUvc,MAAqC,QAAnBwc,EAAUxc,MACjC,EAEc,QAAnBuc,EAAUvc,MAAqC,QAAnBwc,EAAUxc,KAClC,EAEDD,GAAAA,KAAAA,mBAA2Bwc,EAAUvO,KAAMwO,EAAUxO,OAE7D0J,KAAM,SAAS6E,EAAWC,GACzB,OAAOD,EAAU7E,KAAO8E,EAAU9E,MAEnCC,MAAO,SAAS4E,EAAWC,GAC1B,OAAOD,EAAU5E,MAAQ6E,EAAU7E,QAGjC8E,EAAaH,EAAYjV,EAAK6H,WAAWI,YAAcgN,EAAYtO,KACvEiO,EAAQA,EAAMS,MAAK,SAASC,EAAOC,GAClC,IAAIC,EAAa,SAASC,GACzB,OAAOA,EAASC,MAAQD,EAASC,KAAKva,QAAQzC,GAAAA,eAAoB,GAGnE,OAAI8c,EAAWF,KAAWE,EAAWD,IAC5B,GACGC,EAAWF,IAAUE,EAAWD,GACpC,EAG6B,QAA9BvV,EAAK6H,WAAWK,UAAsBkN,EAAWE,EAAOC,IAAUH,EAAWE,EAAOC,MAG5FvV,EAAK2V,YAEgB,IAAjBf,EAAM/c,QACTmI,EAAK6I,YAAYjR,KAAK,iBAAiBV,OACvC8I,EAAKgL,gBAAgBlV,SAErBkK,EAAK6I,YAAYjR,KAAK,iBAAiB9B,OACvCkK,EAAKgL,gBAAgB9T,QAGtB8I,EAAKiL,UAAUwJ,QAEfte,IAAAA,KAAOye,GAAO,SAASgB,EAAKC,GAE3B,IAAIC,EAAYC,EAWhB,GAZAF,EAAMG,KAAOtd,GAAAA,SAAAA,WAAuBmd,EAAMhB,eAEd,IAAhBgB,EAAMxF,MAAyBwF,EAAMxF,MAAQ,GACxDyF,EAAapd,GAAAA,KAAAA,cAAsBud,SAASJ,EAAMxF,KAAM,KAAK,GAC7D0F,EAAYpI,KAAKC,MAAM,IAAMD,KAAKuI,IAAKL,EAAMxF,KAAN,QAA6B,MAEpEyF,EAAa9d,EAAE,QAAS,WACxB+d,EAAY,IAKTF,EAAMlP,KAAK9O,QAAU,GAExB,IAAIR,EAAQsW,KAAKuE,IAAIvE,KAAKwB,MAAM0G,EAAMlP,KAAK9O,OAAS,GAAI,IACpDse,EAAYN,EAAMlP,KAAKvL,OAAO,EAAGya,EAAMlP,KAAK9O,OAASR,GACrD+e,EAAYP,EAAMlP,KAAKvL,OAAOya,EAAMlP,KAAK9O,OAASR,QAElD8e,EAAYN,EAAMlP,KAClByP,EAAY,GAGjB,IAAIrgB,EAAOiK,EAAKiU,UAAU/M,WAAW,CACpCvO,KAAMkd,EAAMld,KACZ2S,IAAKA,EACLnB,SAAU0L,EAAMlP,KAChBwP,UAAWA,EACXC,UAAWA,EACXC,KAAM3d,GAAAA,KAAAA,qBAA6Bmd,EAAMvF,OACzCD,KAAMyF,EACNC,UAAWA,EACXC,KAAMH,EAAMG,OAEb,GAAmB,SAAfH,EAAMld,KAAiB,CAC1B,IAAI8X,EAAU,CACbjG,KAAMc,EAAM,IAAMuK,EAAMlP,KACxB+J,EAAG,IACHC,EAAG,KAEA9C,EAAM,IAAIkE,MACVuE,EAAa5d,GAAAA,YAAe,sBAAwBvC,IAAAA,MAAQsa,GAChE5C,EAAIyD,OAAS,WACRzD,EAAI9B,MAAQ,GACfhW,EAAK6B,KAAK,eAAeyP,KAAK,QAAS,wBAA0BiP,EAAa,MAGhFzI,EAAImE,IAAMsE,EAEXtW,EAAKiL,UAAU5K,OAAOtK,MAGvBiK,EAAKkL,mBAAmB7S,YAAY,oBAMtCsd,UAAW,WACV,IAAIY,EAAY1gB,KAAKsV,SAASvT,KAAK,sBAAsBsc,SACzDre,KAAKsV,SAASsJ,QACd,IAAIzU,EAAOnK,KAEXmK,EAAKmL,SAAS9K,OAAOkW,GAGrB,IAAIvO,EAAOnS,KAAKgT,YAAY9P,KAAK,QAC7Byd,EAAYrgB,GAAAA,CAAE,0DAA0DoC,SAAS,SACrF,GAAIyP,EAAM,CACT,IAAIyO,EAAQzO,EAAK3Q,MAAM,KACvBlB,IAAAA,KAAOsgB,GAAO,SAAS9K,EAAOL,GAE7B,GAAY,MADZA,EAAMmL,EAAMnb,OAEX,OAAO,EAER0E,EAAKmL,SAAShC,QAAQqN,EAAUtP,WAAW,CAC1CoE,IAAKmL,EAAMnf,KAAK,KAAO,IAAMgU,EAC7B3E,KAAM2E,QAKTkL,EAAUtP,WAAW,CACpBoE,IAAK,GACL3E,KAAM,IACJ,CAAE+F,eAAgB,OAAQgK,UAAU7gB,KAAKsV,WAM7CC,sBAAuB,SAASjG,EAAOxM,GACtC,IAAIqH,EAAOmF,EAAMpM,KACbuS,EAAMnV,GAAAA,CAAEgP,EAAMsM,QAAQrF,QAAQ,UAAUrT,KAAK,OACjDiH,EAAK8K,gBAAgBQ,GACrB,IAAIqL,EAAexR,EAAMsM,OAAQrF,QAAQ,cACrCD,EAAsBhW,GAAAA,CAAE,WAAYwgB,GACxC9gB,KAAK+gB,mBAAmBje,EAAM2S,EAAIjU,MAAM,QAAQiE,QAC2B,IAAvEzF,KAAKgT,YAAY9P,KAAK,YAAYoC,QAAQ,yBAAkCtF,KAAKgT,YAAY9P,KAAK,yBACrGoT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,IAMvChB,mBAAoB,SAASlG,EAAO0R,EAAUle,GAC7C,IACIwT,EADctW,KAAKgT,YAAYuD,QAAQ,cACLxU,KAAK,YACb,SAA1Bif,EAAS9d,KAAK,UAC4B,IAAzClD,KAAKgT,YAAY9P,KAAK,gBAA4BoM,EAAM2R,SAC3DjhB,KAAKoV,UAAUrT,KAAK,gCAAgCS,YAAY,+BAEjEwe,EAASlD,YAAY,+BACrBxH,EAAoBE,KAAK,YAAY,IACD,QAA1BwK,EAAS9d,KAAK,UACxBlD,KAAKiV,gBAAgBjV,KAAKgT,YAAY9P,KAAK,QAAU,IAAM8d,EAAS9d,KAAK,cACzElD,KAAK+gB,mBAAmBje,EAAMke,EAAS9d,KAAK,eAC+B,IAAvElD,KAAKgT,YAAY9P,KAAK,YAAYoC,QAAQ,yBAAkCtF,KAAKgT,YAAY9P,KAAK,yBACrGoT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,KAWxCuK,mBAAoB,SAASje,EAAM2S,GAClC,IAAIyL,EAAmB,KAARzL,EAAatT,EAAE,OAAQ,QAAUA,EAAE,OAAQ,mBAAoB,CAAEgf,OAAQ1L,IACpF2L,EAAmB,KAAR3L,EAAatT,EAAE,OAAQ,QAAUA,EAAE,OAAQ,mBAAoB,CAAEgf,OAAQ1L,IACpF9E,EAAUrQ,GAAAA,CAAE,+BAChB,OAAQwC,GACP,KAAK9C,KAAK6P,uBAEV,KAAK7P,KAAKiQ,uBACT,MACD,KAAKjQ,KAAK+P,qBACTY,EAAQrP,KAAK4f,GACb,MACD,KAAKlhB,KAAK8P,qBACTa,EAAQrP,KAAK8f,GACb,MACD,KAAKphB,KAAKgQ,0BACTW,EAAQ0Q,GAAG,GAAG/f,KAAK4f,GACnBvQ,EAAQ0Q,GAAG,GAAG/f,KAAK8f,MAMvB,IC5yCaE,IApBe/R,EAeWR,SAfHS,EAeaA,EAAAA,KAd5CC,EAAQF,EAAOP,qBAAqB,QAAQ,GAAGC,aAAa,qBAEzD,CACNqS,SAAU,kBAAM7R,GAChB8R,SAAU,SAAAC,GAGThS,EAAK,oBAAqB,CACzBC,MAHDA,EAAQ+R,OAcgCF,SCXrCG,GAAgB,SAAhBA,EAAyBtF,EAAKjZ,GACnC,IACI4N,EACA4Q,EAFAC,EAAU,GAMd,GAHA3hB,KAAK4hB,kBAAoB,GACzB5hB,KAAK6hB,QAAS,EACd7hB,KAAK8hB,UAAY,GACb5e,EACH,IAAK4N,KAAQ5N,EACZye,GAAW7Q,EAAO,IAAMiR,mBAAmB7e,EAAK4N,IAAS,IAI3D,GADA6Q,GAAW,gBAAkBI,mBAAmBT,MAC3CthB,KAAKgiB,aAAsC,oBAAhBC,YAWzB,CACN,IAAIC,EAAW,yBAA2BT,EAAcU,YACxDV,EAAcW,gBAAgBX,EAAcU,aAAeniB,KAC3DA,KAAKqiB,OAAS/hB,GAAAA,CAAE,qBAChBN,KAAKqiB,OAAO7Q,KAAK,KAAM0Q,GACvBliB,KAAKqiB,OAAOpiB,OAEZyhB,EAAW,KACe,IAAtBvF,EAAI7W,QAAQ,OACfoc,EAAW,KAEZ1hB,KAAKqiB,OAAO7Q,KAAK,MAAO2K,EAAMuF,EAAW,6BAA+BD,EAAcU,YAAc,IAAMR,GAC1GrhB,GAAAA,CAAE,QAAQkK,OAAOxK,KAAKqiB,QACtBriB,KAAKgiB,aAAc,EACnBP,EAAcU,mBAxBdT,EAAW,KACe,IAAtBvF,EAAI7W,QAAQ,OACfoc,EAAW,KAEZ1hB,KAAKsiB,OAAS,IAAIL,YAAY9F,EAAMuF,EAAWC,GAC/C3hB,KAAKsiB,OAAOC,UAAY,SAAS9V,GAChC,IAAK,IAAIkM,EAAI,EAAGA,EAAI3Y,KAAK4hB,kBAAkB5f,OAAQ2W,IAClD3Y,KAAK4hB,kBAAkBjJ,GAAGlQ,KAAK+Z,MAAM/V,EAAEvJ,QAEvCE,KAAKpD,MAkBRA,KAAKyiB,OAAO,eAAgB,SAASvf,GACvB,UAATA,GACHlD,KAAK+R,SAEL3O,KAAKpD,QAERyhB,GAAcW,gBAAkB,GAChCX,GAAcU,YAAc,EAC5BV,GAAciB,iBAAmB,SAASvd,EAAIrC,EAAMI,GACnDue,GAAcW,gBAAgBjd,GAAIud,iBAAiB5f,EAAMI,IAE1Due,GAAc7Y,UAAY,CACzBgZ,kBAAmB,GACnBS,OAAQ,KACRP,UAAW,GACXE,aAAa,EAWbU,iBAAkB,SAAS5f,EAAMI,GAChC,IAAIyV,EAEJ,IAAI3Y,KAAK6hB,OAGT,GAAI/e,GACH,QAAmC,IAAxB9C,KAAK8hB,UAAUa,KACzB,IAAKhK,EAAI,EAAGA,EAAI3Y,KAAK8hB,UAAUhf,GAAMd,OAAQ2W,IAC5C3Y,KAAK8hB,UAAUhf,GAAM6V,GAAGzV,QAI1B,IAAKyV,EAAI,EAAGA,EAAI3Y,KAAK4hB,kBAAkB5f,OAAQ2W,IAC9C3Y,KAAK4hB,kBAAkBjJ,GAAGzV,IAI7B0f,WAAY,EAOZH,OAAQ,SAAS3f,EAAM/C,GAClBA,GAAYA,EAASY,OAEpBmC,EACC9C,KAAKgiB,aACHhiB,KAAK8hB,UAAUhf,KACnB9C,KAAK8hB,UAAUhf,GAAQ,IAExB9C,KAAK8hB,UAAUhf,GAAM6H,KAAK5K,IAE1BC,KAAKsiB,OAAOO,iBAAiB/f,GAAM,SAAS2J,QACrB,IAAXA,EAAEvJ,KACZnD,EAAS0I,KAAK+Z,MAAM/V,EAAEvJ,OAEtBnD,EAAS,OAER,GAGJC,KAAK4hB,kBAAkBjX,KAAK5K,KAO/BgS,MAAO,WACN/R,KAAK6hB,QAAS,OACa,IAAhB7hB,KAAKsiB,QACftiB,KAAKsiB,OAAOvQ,UAKf,sBCxIW+Q,GAAc,KAqEZC,GAAY,SAASC,GACjC,GAAIF,GAAa,CAChB,IAAMG,EAAWH,GACjBA,GAAYrgB,QAAQ,IAAInC,IAAAA,OAAQ,eAChCwiB,GAAYI,QC/EW,ID+EQ,WAC9BD,EAASxgB,QAAQ,IAAInC,IAAAA,OAAQ,cACzB0iB,GACHA,EAASG,MAAMnjB,KAAMojB,cAMxB9iB,GAAAA,CAAE,eAAekR,KAAK,iBAAiB,GAEvClR,GAAAA,CAAE,eAAekC,YAAY,cAC7BsgB,GAAc,ME5FTO,KAAY/f,OAAOggB,wGCCzBhgB,OAAOigB,+BAAiCjgB,OAAOigB,gCAAkC,GACjFjgB,OAAOkgB,mCAAqClgB,OAAOkgB,oCAAsC,GAOzF,IA2CaC,GAAqB,SAAAC,GACjC,YAAwDtjB,IAAjDkD,OAAOigB,+BAA+BG,SACYtjB,IAArDkD,OAAOkgB,mCAAmCE,IAOlCC,GAAqB,SAAAD,GACjC,MAAO,CACNE,aAActgB,OAAOigB,+BAA+BG,IAAU,GAC9DG,eAAgBvgB,OAAOkgB,mCAAmCE,8OCpC5D,IAAMI,GAAO,CAUZC,KAVY,SAUPC,EAASjkB,GAEb,GAAI0jB,GAAmBO,IAA+B,OAAnBnhB,GAAAA,YAAyB,CAC3D,IAAMpD,EAAWa,IAAAA,WACXsd,EAAUne,EAASme,UAGzB,OAFAA,EAAQvX,KAAKtG,GACbN,EAASgP,UACFmP,EAGR,IAAMzT,EAAOnK,KACPgD,GAAMihB,EAAAA,EAAAA,kBAAiBD,EAAS,OAAQnhB,GAAAA,YAAiB,SAG/D,OAAOvC,IAAAA,IAAM0C,GACXqD,MACA,SAAS3B,GACJA,EAAOkf,cACVzZ,EAAK+Z,SAASF,EAAStf,EAAOkf,aAAclf,EAAOyf,eAGrD9d,KAAKtG,IASRmkB,SAxCY,SAwCHF,EAASI,GDpCoB,IAACV,EAAOE,EAAcC,EAArBH,ECqCdM,EDrCqBJ,ECqCZQ,EDrC0BP,ECqClB7jB,KAAKqkB,WDpC1CZ,GAAmBC,GAdV,SAACA,EAAOE,EAAcC,GACpCvgB,OAAOigB,+BAA+BG,GAASjd,OAAOC,OACrDpD,OAAOigB,+BAA+BG,GACtCE,GAEDtgB,OAAOkgB,mCAAmCE,GAASG,EAYlDS,CAAOZ,EAAOE,EAAcC,GA3Bb,SAACH,EAAOE,EAAcC,GACtCvgB,OAAOigB,+BAA+BG,GAASE,EAC/CtgB,OAAOkgB,mCAAmCE,GAASG,EAuBlDK,CAASR,EAAOE,EAAcC,ICyC/BU,YDhCwC,SAAAb,UACjCpgB,OAAOigB,+BAA+BG,UACtCpgB,OAAOkgB,mCAAmCE,IC4CjDc,UA7DY,SA6DF9gB,EAAKpC,EAAMmjB,EAAM7H,EAAO9b,GACjC,IAIM4jB,EAAa5jB,GAAW,GAC9BX,EAAAA,GAAAA,SAAWukB,EALY,CACtB9P,QAAQ,EACR+P,UAAU,IAKX,IAAMC,EAAcF,EAAWC,SAAWE,KAAAA,SAAqBC,KACzDC,EAAYL,EAAW9P,OAASlT,KAAaojB,KAiB/CE,EAAc1jB,EAEZwC,EADS6f,GAAmBjgB,GACbkgB,aAAatiB,GAKlC,YAJuB,IAAXwC,IACXkhB,EAAclhB,GAGK,WAAhB,GAAO2gB,SAA+BrkB,IAAVwc,EACxBgI,EApBO,SAAStjB,EAAMmjB,EAAM7H,GACnC,OAAOtb,EAAK+Z,QAAQ,MAAOuB,GAAOvB,QAAQ,eACzC,SAAS4J,EAAGC,GACX,IAAMC,EAAIV,EAAKS,GACf,OACQN,EADS,iBAANO,GAA+B,iBAANA,EAChBJ,EAAUI,GAEVF,MAaHG,CAAOJ,EAAaP,EAAM7H,IAEtCgI,EAAYI,IAgBrBK,gBAjHY,SAiHI3hB,EAAK4hB,EAAcC,EAAY3I,EAAO6H,EAAM3jB,GAC3D,IAAM0kB,EAAa,IAAMF,EAAe,OAASC,EAAa,IACxDnB,EAAST,GAAmBjgB,GAC5BI,EAAQsgB,EAAOR,aAAa4B,GAClC,QAAuB,IAAX1hB,EAAwB,CACnC,IAAMkhB,EAAclhB,EACpB,GAAIxD,IAAAA,QAAU0kB,GAAc,CAC3B,IAAMS,EAASrB,EAAOP,eAAejH,GACrC,OAAO5c,KAAKwkB,UAAU9gB,EAAKshB,EAAYS,GAAShB,EAAM7H,EAAO9b,IAI/D,OAAc,IAAV8b,EACI5c,KAAKwkB,UAAU9gB,EAAK4hB,EAAcb,EAAM7H,EAAO9b,GAE/Cd,KAAKwkB,UAAU9gB,EAAK6hB,EAAYd,EAAM7H,EAAO9b,IAWtDujB,WA3IY,SA2IDqB,GACV,IAAIC,EAAW9iB,GAAAA,cAMf,GALiB,UAAb8iB,IAEHA,EAAW,YAGY,IAAbA,GAAyC,KAAbA,EACtC,OAAmB,IAAXD,EAAgB,EAAI,EAY7B,OATIC,EAAS3jB,OAAS,IACrB2jB,EAAWA,EAASC,UAAU,EAAGD,EAAS1R,YAAY,OAQ/C0R,GACR,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KAkHL,QACC,OAAO,EAhHR,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACJ,OAAmB,IAAXD,EAAgB,EAAI,EAE7B,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,KACL,IAAK,KACJ,OAAoB,IAAXA,GAA6B,IAAXA,EAAiB,EAAI,EAEjD,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACJ,OAASA,EAAS,IAAO,GAAOA,EAAS,KAAQ,GAAO,EAAOA,EAAS,IAAM,GAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQA,EAAS,KAAO,IAAQ,EAAI,EAEhK,IAAK,KACL,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAOA,GAAU,GAAOA,GAAU,EAAM,EAAI,EAErE,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAI,EAEnD,IAAK,KACJ,OAASA,EAAS,IAAO,GAAOA,EAAS,KAAQ,GAAO,EAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQA,EAAS,KAAO,IAAQ,EAAI,EAE1I,IAAK,KACJ,OAAQA,EAAS,KAAQ,EAAK,EAAMA,EAAS,KAAQ,EAAK,EAAOA,EAAS,KAAQ,GAAOA,EAAS,KAAQ,EAAM,EAAI,EAErH,IAAK,KACJ,OAAQA,EAAS,IAAO,EAAK,EAAI,EAElC,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAkB,IAAXA,GAAmBA,EAAS,IAAM,GAAOA,EAAS,IAAM,GAAQ,EAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,GAAO,EAAI,EAExJ,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAOA,EAAS,IAAO,GAAOA,EAAS,KAAQ,GAAO,EAAI,EAEnF,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAOA,EAAS,IAAM,GAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQ,EAAI,EAE/H,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAkB,IAAXA,GAA6B,KAAXA,EAAkB,EAAI,EAE9F,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAkB,IAAXA,GAAmBA,EAAS,IAAM,GAAOA,EAAS,IAAM,GAAQ,EAAI,EAEpG,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAOA,EAAS,KAAO,GAAOA,EAAS,KAAO,GAAO,EAAOA,EAAS,KAAO,IAAQA,EAAS,KAAO,GAAO,EAAI,KAQtL,MAgBAG,KAAAA,eAA0B,KAAK,SAASniB,EAAKpC,GAC5C,OAAOwiB,GAAKU,UAAU9gB,EAAKpC,qBCzU5B,IAMCwkB,YANc,SAMFC,GACX/lB,KAAKgmB,YAAYD,EAAU5jB,EAAE,OAAQ,cAStC6jB,YAhBc,SAgBFD,EAAUzV,GACrBhQ,GAAAA,CAAEylB,GAAUzkB,KAAKgP,GACf9N,YAAY,WACZA,YAAY,SACZyjB,MAAK,GAAM,GACX5kB,QAaH6kB,eAlCc,SAkCCH,EAAU5e,GACxBnH,KAAKmmB,eAAeJ,EAAU5e,IAa/Bgf,eAhDc,SAgDCJ,EAAU5e,GACA,YAApBA,EAASnC,OACZhF,KAAKomB,gBAAgBL,EAAU5e,EAASjE,KAAKoN,SAE7CtQ,KAAKqmB,cAAcN,EAAU5e,EAASjE,KAAKoN,UAU7C8V,gBA9Dc,SA8DEL,EAAUzV,GACzBhQ,GAAAA,CAAEylB,GAAUzkB,KAAKgP,GACf5N,SAAS,WACTF,YAAY,SACZyjB,MAAK,GAAM,GACXK,MAAM,KACNC,QAAQ,KACRllB,QASHglB,cA9Ec,SA8EAN,EAAUzV,GACvBhQ,GAAAA,CAAEylB,GAAUzkB,KAAKgP,GACf5N,SAAS,SACTF,YAAY,WACZnB,gCCjFJ,IACCtB,SAAU,KAEVymB,aAAc,KAEdC,KALc,WAMbnmB,GAAAA,CAAE,8BAA8BmK,GAAG,QAAStK,EAAAA,GAAAA,KAAOH,KAAK0mB,4BAA6B1mB,OACrFA,KAAKwmB,aAAeG,KAAAA,OAGrBC,6BAVc,WAWb,IAAMC,EAAiB7mB,KAAKwmB,aAAqC,IAArBljB,OAAOwjB,YAC7CC,EAAiBJ,KAAAA,OAAgBE,EAAwC,IAAtBvjB,OAAO0jB,cAGhE,OAAQ1jB,OAAO2jB,mCAAqCF,EAAiB,MAQtEL,4BAvBc,SAuBc3mB,EAAUe,EAASomB,GAC9CpmB,OAA6B,IAAZA,EAA0BA,EAAU,GACrD,IAAMqI,EAAW,CAChBiH,MAAOjO,EAAE,OAAQ,2BACjBb,KAAMa,EACL,OACA,qDAEDsO,QAAStO,EAAE,OAAQ,WACnBsP,MAAOtP,EAAE,OAAQ,YACjBzB,MAAO,IAGFymB,EAAShnB,EAAAA,GAAAA,OAASgJ,EAAUrI,GAE5BqJ,EAAOnK,KAETA,KAAK4mB,gCACR/jB,GAAAA,QAAAA,OACCskB,EAAO7lB,KACP6lB,EAAO/W,OACP,SAAS1L,EAAQqM,GACZrM,GAAuB,KAAbqM,EACb5G,EAAKid,iBAAiBrW,EAAUoW,GACtBhnB,EAAAA,GAAAA,WAAa+mB,IACvBA,OAGF,EACAC,EAAO1V,OACP,GACCpL,MAAK,WACN,IAAMghB,EAAU/mB,GAAAA,CAAE,sBAGlB,GAFA+mB,EAAQtlB,KAAK,YAAYsU,SACzBgR,EAAQ3kB,SAAS,yBACI,KAAjBykB,EAAOzmB,MAAc,CACxB,IAAM4mB,EAAShnB,GAAAA,CAAE,WAAWoC,SAAS,eAAepB,KAAK6lB,EAAOzmB,OAChE2mB,EAAQtlB,KAAK,sBAAsByI,OAAO8c,GAE3CD,EAAQtlB,KAAK,wBAAwBW,SAAS,SAE9C,IAAM6kB,EAAWF,EAAQtlB,KAAK,UAC9BwlB,EAASlG,GAAG,GAAGphB,OACfsnB,EAASlG,GAAG,GAAG/f,KAAK6lB,EAAO1W,YAI7BzQ,KAAKD,SAAWA,GAGjBqnB,iBAzEc,SAyEGrW,EAAUoW,GAC1B,IAAMhd,EAAOnK,KAEbM,IAAAA,KAAO,CACN0C,KAAKwkB,EAAAA,EAAAA,aAAY,kBACjBtkB,KAAM,CACL6N,SAAAA,GAEDjO,KAAM,OACNK,QANM,SAMEgE,GACP7D,OAAO0jB,aAAe7f,EAASsgB,UAE3BtnB,EAAAA,GAAAA,WAAagK,EAAKpK,WACrBoK,EAAKpK,YAGPW,MAbM,WAcLymB,EAAOzmB,MAAQyB,EAAE,OAAQ,qCACzBU,GAAAA,qBAAAA,4BAAoDsH,EAAKpK,SAAUonB,QCvG1DO,GAAQpkB,OAAOqkB,QAAU,GCWtC,IAECC,UAAW,GAcXC,WAhBc,SAgBH5f,EAAQjF,EAAKqY,GACvB,IAAIyM,EAOJ,GALCA,EADuB,iBAAZ7f,EACCA,EAEApF,GAAAA,iBAAoBoF,GAG7B3E,OAAOykB,QAAQC,UAAW,CAK7B,GAJAhlB,EAAMA,GAAOilB,SAASC,SAAW,IAAMJ,EAGrBK,UAAUC,UAAUC,cAAc/iB,QAAQ,YAAc,GACzD8a,SAAS+H,UAAUC,UAAU5mB,MAAM,KAAKiE,OAAS,GAEjE,IADA,IACsC6iB,EADhCC,EAAWxZ,SAASyZ,iBAAiB,+DAClC7P,EAAI,EAAG8P,EAAKF,EAASvmB,OAAiB2W,EAAI8P,EAAI9P,KACtD2P,EAAUC,EAAS5P,IAEXvC,MAAMsS,KAAOJ,EAAQlS,MAAMsS,KAEnCJ,EAAQlS,MAAMuS,OAASL,EAAQlS,MAAMuS,OACrCL,EAAQM,gBAAgB,UACxBN,EAAQO,aAAa,SAAU,gBAG7BxN,EACH/X,OAAOykB,QAAQe,aAAa7gB,EAAQ,GAAIjF,GAExCM,OAAOykB,QAAQC,UAAU/f,EAAQ,GAAIjF,QAItCM,OAAO2kB,SAASc,KAAO,IAAMjB,EAG7B9nB,KAAKgpB,YAAa,GAapBhB,UAhEc,SAgEJ/f,EAAQjF,GACjBhD,KAAK6nB,WAAW5f,EAAQjF,GAAK,IAc9B8lB,aA/Ec,SA+ED7gB,EAAQjF,GACpBhD,KAAK6nB,WAAW5f,EAAQjF,GAAK,IAQ9BimB,qBAxFc,SAwFOC,GACpBlpB,KAAK4nB,UAAUjd,KAAKue,IASrBC,gBAlGc,WAmGb,IAAMJ,EAAOzlB,OAAO2kB,SAASc,KACvBK,EAAML,EAAKzjB,QAAQ,KACzB,OAAI8jB,GAAO,EACHL,EAAKxjB,OAAO6jB,EAAM,GAEtBL,EAAK/mB,OAED+mB,EAAKxjB,OAAO,GAEb,IAGR8jB,aA/Gc,SA+GDC,GACZ,OAAOA,EAAMjO,QAAQ,MAAO,MAS7BkO,cAzHc,WA0Hb,IACIthB,EADEqhB,EAAQtpB,KAAKmpB,kBAQnB,OALIG,IACHrhB,EAASpF,GAAAA,iBAAoB7C,KAAKqpB,aAAaC,MAGhDrhB,EAAS9H,EAAAA,GAAAA,OAAS8H,GAAU,GAAIpF,GAAAA,iBAAoB7C,KAAKqpB,aAAapB,SAASuB,YAC9D,IAGlBC,YArIc,SAqIFhd,GAKX,IAAIxE,EAJJ,GAAIjI,KAAKgpB,WACRhpB,KAAKgpB,YAAa,OAInB,GAAKhpB,KAAK4nB,UAAU5lB,OAApB,CAGAiG,EAAUwE,GAAKA,EAAEid,MACbvpB,EAAAA,GAAAA,SAAW8H,GACdA,EAASpF,GAAAA,iBAAoBoF,GAClBA,IACXA,EAASjI,KAAKupB,iBAAmB,IAElC,IAAK,IAAI5Q,EAAI,EAAGA,EAAI3Y,KAAK4nB,UAAU5lB,OAAQ2W,IAC1C3Y,KAAK4nB,UAAUjP,GAAG1Q,MCtJrB,SAAS0hB,GAASxnB,GAQjB,IANA,IAII4Y,EAJE6O,EAAK,GACP/O,EAAI,EACJC,GAAK,EACL+B,EAAI,EAGDhC,EAAI1Y,EAAEH,QAAQ,CACpB+Y,EAAI5Y,EAAE0nB,OAAOhP,GAEb,IAAMiP,GAAOjN,GAAW,MAAN9B,GAAeA,GAAK,KAAOA,GAAK,IAC9C+O,IAAMjN,IAGT+M,IADA9O,GACQ,GACR+B,EAAIiN,GAELF,EAAG9O,IAAMC,EACTF,IAED,OAAO+O,EAQR,QAECG,QAAAA,GAKAC,sBAAAA,EAYAC,iBAnBc,SAmBGC,GAChB,GAAsB,iBAAXA,EACV,OAAO,KAGR,IAAMC,EAAID,EAAO7B,cAAc7T,OAC3B4V,EAAQ,KAgBNC,EAAUF,EAAE1V,MAAM,mDACxB,OAAgB,OAAZ4V,EAMI,MALPD,EAAQE,WAAWH,GACdI,SAASH,IAMXC,EAAQ,KACXD,GAxBkB,CAClBlF,EAAG,EACHsF,EAAG,KACHC,GAAI,KACJC,GAAI,QACJZ,EAAG,QACHa,GAAI,WACJC,EAAG,WACHC,GAAI,cACJ1oB,EAAG,cACH2oB,GAAI,gBACJC,EAAG,iBAawBV,EAAQ,KAGpCD,EAAQtS,KAAKC,MAAMqS,IATV,OAkBVY,WA/Dc,SA+DHC,EAAWC,GAKrB,YAJuB9qB,IAAnBkD,OAAO6nB,SACV1qB,QAAQyF,KAAK,+FAEdglB,EAASA,GAAU,MACZvE,IAAAA,CAAOsE,GAAWC,OAAOA,IAOjCE,qBA3Ec,SA2EOH,QACG7qB,IAAnBkD,OAAO6nB,SACV1qB,QAAQyF,KAAK,yGAEd,IAAMmlB,EAAO1E,IAAAA,GAAS0E,KAAK1E,IAAAA,CAAOsE,IAClC,OAAII,GAAQ,GAAKA,EAAO,KAChBlpB,EAAE,OAAQ,eAEXwkB,IAAAA,CAAOsE,GAAWK,WAQ1BC,kBA3Fc,WA4Fb,GAAIvrB,KAAKwrB,gBACR,OAAOxrB,KAAKwrB,gBAGb,IAAMC,EAAQ1c,SAASqN,cAAc,KACrCqP,EAAMrV,MAAMF,MAAQ,OACpBuV,EAAMrV,MAAMD,OAAS,QAErB,IAAMuV,EAAQ3c,SAASqN,cAAc,OACrCsP,EAAMtV,MAAMuV,SAAW,WACvBD,EAAMtV,MAAMwV,IAAM,MAClBF,EAAMtV,MAAMyV,KAAO,MACnBH,EAAMtV,MAAM0V,WAAa,SACzBJ,EAAMtV,MAAMF,MAAQ,QACpBwV,EAAMtV,MAAMD,OAAS,QACrBuV,EAAMtV,MAAM2V,SAAW,SACvBL,EAAMM,YAAYP,GAElB1c,SAASzH,KAAK0kB,YAAYN,GAC1B,IAAMO,EAAKR,EAAMS,YACjBR,EAAMtV,MAAM2V,SAAW,SACvB,IAAII,EAAKV,EAAMS,YASf,OARID,IAAOE,IACVA,EAAKT,EAAMU,aAGZrd,SAASzH,KAAK+kB,YAAYX,GAE1B1rB,KAAKwrB,gBAAmBS,EAAKE,EAEtBnsB,KAAKwrB,iBASbc,UAnIc,SAmIJ9L,GAGT,OAAO,IAAI+L,KAAK/L,EAAKgM,cAAehM,EAAKiM,WAAYjM,EAAKkM,YAW3DC,mBAjJc,SAiJK1H,EAAGC,GACrB,IAAIrK,EACE+R,EAAKjD,GAAS1E,GACd4H,EAAKlD,GAASzE,GAEpB,IAAKrK,EAAI,EAAG+R,EAAG/R,IAAMgS,EAAGhS,GAAIA,IAC3B,GAAI+R,EAAG/R,KAAOgS,EAAGhS,GAAI,CACpB,IAAMiS,EAAOC,OAAOH,EAAG/R,IAAWmS,EAAOD,OAAOF,EAAGhS,IAGnD,OAAIiS,GAAQF,EAAG/R,IAAMmS,GAAQH,EAAGhS,GACxBiS,EAAOE,EAIPJ,EAAG/R,GAAGoS,cAAcJ,EAAGhS,GAAIhY,GAAAA,eAIrC,OAAO+pB,EAAG5qB,OAAS6qB,EAAG7qB,QASvBkrB,QA7Kc,SA6KNntB,EAAUotB,IACQ,SAAnBC,KACc,IAAfrtB,KACHstB,WAAWD,EAAkBD,GAI/BC,IAUDE,mBA9Lc,SA8LKxc,EAAMhN,GAExB,IADA,IAAMypB,EAAUxe,SAASye,OAAOhsB,MAAM,KAC7BmX,EAAI,EAAGA,EAAI4U,EAAQvrB,OAAQ2W,IAAK,CACxC,IAAM6U,EAASD,EAAQ5U,GAAGnX,MAAM,KAChC,GAAIgsB,EAAO,GAAGhZ,SAAW1D,GAAQ0c,EAAO,GAAGhZ,SAAW1Q,EACrD,OAAO,EAGT,OAAO,IC3OI2pB,GAFAnqB,OAAOoqB,UCAhBC,GAAUrqB,OAAOsqB,YAErB,QAAuB,IAAZD,GAAyB,CAEnC,IAAMvE,IADNuE,GAAU1F,SAASC,UACC5iB,QAAQ,eAE3BqoB,IADY,IAATvE,GACOuE,GAAQpoB,OAAO,EAAG6jB,IAElBuE,GAAQpoB,OAAO,EAAGooB,GAAQ1Z,YAAY,MAIlD,ICXmBlL,GDWnB,MEiFA,IAIC8kB,SZhGuB,CAAC,GAAI,QAAS,MAAO,cAAe,OAAQ,YYiGnEC,UZhGwB,GYiGxBC,eZ1F6B,GY2F7BC,kBZhGgC,EYiGhCC,kBZ9FgC,EY+FhCC,gBZnG8B,EYoG9BC,gBZlG8B,EYmG9BC,iBZhG+B,GYiG/BC,kBZnGgC,EYoGhCC,aZhG2B,mBY4G3BC,kBAAmB,SAAA5Z,GAAI,QAAOA,EAAKF,MAAM+Z,EAAAA,wBAEzCC,U/BrGwB,SAAC/qB,EAAKgrB,EAAQxZ,GAGtC,IAAIzV,EAFJgB,QAAQyF,KAAK,iEAGb,IAAMiM,GAAO8R,EAAAA,EAAAA,kBAAiBvgB,EAAK,KAAMgrB,EAAS,OAUlD,OATKhvB,EAAcyS,GAKd+C,GACHA,KALDzV,EAAWa,IAAAA,WACXA,IAAAA,UAAY6R,GAAM,kBAAM1S,EAASgP,aACjC/O,EAAcyS,GAAQ1S,GAMhBC,EAAcyS,I+BwFrBwc,S/B9EuB,SAACjrB,EAAK0S,GAC7B3V,QAAQyF,KAAK,oEAEb,IAAMiM,GAAO8R,EAAAA,EAAAA,kBAAiBvgB,EAAK,MAAO0S,EAAQ,SACd,IAAhCzW,EAAa2F,QAAQ6M,KACxBxS,EAAagL,KAAKwH,GACdpD,SAAS6f,iBACZ7f,SAAS6f,iBAAiBzc,IAE1BiE,EAAQ9V,GAAAA,CAAE,gDAAkD6R,EAAO,OACnE7R,GAAAA,CAAE,QAAQkK,OAAO4L,M+BqEnB9T,KAAAA,EACAkB,UAAAA,EACAH,UAAAA,EACAwrB,YC5G0B,SAAAC,GAG1B,GAFAruB,QAAQyF,KAAK,2EAEO,IAAT4oB,QAA8C,IAAfA,EAAKC,MAC9C,KAAM,CACLje,KAAM,mBACNR,QAAS,kCAGX,IAAIzL,EAAQ,CAAEmqB,WAAY,eAAgBC,OAAO,GACjD3uB,IAAAA,OAASuE,EAAOiqB,GAChB,IAAII,EAAW5uB,GAAAA,CAAE,gBACjB,GAAwB,IAApB4uB,EAASltB,OACZ,KAAM,CACL8O,KAAM,oBACNR,QAAS,2EAGX,IAAI6e,EAAQ7uB,GAAAA,CAAE,sBAMd,GALqB,IAAjB6uB,EAAMntB,SACT1B,GAAAA,CAAE,QAAQgT,QAAQ,4DAClB6b,EAAQ7uB,GAAAA,CAAE,uBACJoC,SAASwsB,EAASlR,SAAS,YAAc,WAAa,eAEzDmR,EAAMvjB,GAAG,YACZujB,EAAMlvB,OAAOoW,aACP,CACN,IAAM+Y,EAAaF,EAASlR,SAAS,YAAc,KAAO,OAC1D1d,IAAAA,KAAM2jB,EAAAA,EAAAA,kBAAiBpf,EAAMkqB,MAAO,GAAIlqB,EAAMmqB,aAAa,SAAS9rB,GACnEisB,EAAMtuB,KAAKqC,GAAMgS,OAAM,WAKtB,GAJAia,EAAM7b,QAAQ,sBAAwB8b,EAAa,gBAAkBjtB,EAAE,OAAQ,YAAc,8BAA8Bd,OAC3H8tB,EAAMptB,KAAK,UAAUqB,KAAK,SAAS,WAClC+rB,EAAM9Y,iBAEqB,IAAjBxR,EAAMwqB,OAAwB,CACxC,IAAIC,EACJ,IAAqB,IAAjBzqB,EAAMwqB,OACTC,EAAa,kBACP,IAA4B,iBAAjBzqB,EAAMwqB,OAGvB,KAAM,CACLve,KAAM,mBACNR,QAAS,8DAJVgf,EAAazqB,EAAMwqB,OAOhBxqB,EAAMoqB,OACT3uB,IAAAA,UAAY,CAAE2uB,OAAO,IAEtB3uB,IAAAA,WAAY2jB,EAAAA,EAAAA,kBAAiBpf,EAAMkqB,MAAO,KAAMO,IAC9C7Y,MAAK,SAAS8Y,EAAOL,EAAUziB,GAC/B,MAAMA,SAGPpL,SACD,UDsDJmuB,aAAAA,EACAjpB,SAAAA,EACA0H,aAAAA,EACAkZ,OAAQqH,EAORrf,YAAAA,EACAsgB,QAAS/f,EACTuS,YAAAA,GAQAyN,epBxI6B,WAC7B,MAAO,CACNC,IAAKxgB,EACLD,YAAAA,IoBsID0gB,YX1I0B,kBAAMvM,IW2IhCwM,KAAAA,GAOAC,2BAA4B7tB,EAC5B8tB,kB7BpI+B,SAAAloB,IAIZ,IAAfA,EAAI7C,QAAoC,UAAnB6C,EAAImoB,YAA6C,YAAnBnoB,EAAImoB,aAA4BntB,GAAAA,iBAInF1C,EAAAA,GAAAA,SAAW,CAAC,IAAK,IAAK,IAAK,KAAM0H,EAAI7C,SAAWnC,GAAAA,YAEnDwqB,YAAW,WACV,IAAKxqB,GAAAA,wBAA6BA,GAAAA,cAAkB,CACnD,IAAIotB,EAAQ,EAEN9C,EAAW+C,aAAY,WAC5BhuB,EAAAA,WAAwB2a,EAAE,OAAQ,+CAAgD,gDAFnE,EAE8HoT,IACzIA,GAHW,IAIdE,cAAchD,GACdtqB,GAAAA,UAEDotB,MACE,KAIHptB,GAAAA,eAAmB,KAElB,KACsB,IAAfgF,EAAI7C,QAEdqoB,YAAW,WACLxqB,GAAAA,uBAA6BA,GAAAA,eAEjCA,GAAAA,+BAEC,O6BkGJutB,8B7BtF4C,SAAAvoB,GAmBxCA,EAAIgb,mBACPhb,EAAIgb,iBAAiB,QAnBD,WACG,IAAnBhb,EAAIwoB,aAIHxoB,EAAI7C,QAAU,KAAO6C,EAAI7C,OAAS,KAAuB,MAAf6C,EAAI7C,QAKnD1E,GAAAA,CAAEyO,UAAUtM,QAAQ,IAAInC,IAAAA,OAAQ,aAAcuH,OAU9CA,EAAIgb,iBAAiB,SAPA,WAErBviB,GAAAA,CAAEyO,UAAUtM,QAAQ,IAAInC,IAAAA,OAAQ,aAAcuH,Q6B8E/CyoB,gBE1J8B,WAE9B,OADA7vB,QAAQyF,KAAK,sGACNqqB,EAAAA,GAAAA,oBF6JPxN,UAAAA,GACAyN,abvJ2B,SAASC,EAASC,EAASC,EAAQC,GAC9DF,EAAQhuB,SAAS,QACjB,IAAMmuB,EAAiD,MAA5BJ,EAAQja,KAAK,YAAkD,WAA5Bia,EAAQja,KAAK,WAI3Eia,EAAQhmB,GAAGomB,EAAqB,aAAe,yBAAyB,SAASvhB,GAEhFA,EAAMsE,iBAGFtE,EAAM3L,KAAqB,UAAd2L,EAAM3L,MAInB+sB,EAAQ9kB,GAAGkX,IACdC,MAEUD,IAGVC,MAGkB,IAAf6N,GACHF,EAAQ5T,SAASpa,SAAS,cAI3B+tB,EAAQjf,KAAK,iBAAiB,GAE9Bkf,EAAQI,YCjDe,GDiDQH,GAC/B7N,GAAc4N,QawHfK,SbpEuB,SAACN,EAASC,EAAS1N,GACtC0N,EAAQ9kB,GAAGkX,MAGfC,KACAD,GAAc4N,EAEdA,EAAQjuB,QAAQ,IAAInC,IAAAA,OAAQ,eAC5BowB,EAAQrvB,OACRqvB,EAAQjuB,QAAQ,IAAInC,IAAAA,OAAQ,cAExBH,EAAAA,GAAAA,WAAa6iB,IAChBA,MayDDgO,eb9G6B,SAACP,EAASC,GAEnCA,EAAQ9kB,GAAGkX,KACdC,KAED0N,EAAQQ,IAAI,cAAczuB,YAAY,cACtCkuB,EAAQluB,YAAY,SagHpB0uB,SAAAA,EAAAA,GAIAC,WAAAA,EAAAA,GAIAC,QAAAA,EAAAA,GAIAC,WAAAA,EAAAA,GAIAC,UAAAA,EAAAA,GAKAC,QGzLsB,kBAAMjuB,OAAO2kB,SAASuJ,MH0L5CC,YGhL0B,kBAAMnuB,OAAO2kB,SAASyJ,UHiLhDC,QGvKsB,kBAAMruB,OAAO2kB,SAAS2J,MHwK5CC,YG5M0B,kBAAMvuB,OAAO2kB,SAAS6J,SAAStwB,MAAM,KAAK,IHiNpEuwB,mBAAAA,GAAAA,mBACAC,UTuHwB,kCAAM1xB,GAAAA,CAAE,QAAQ4C,KAAK,iBAArB,QAAkC,MStH1D+uB,YT6H0B,kBAAM3xB,GAAAA,CAAE,QAAQkW,KAAK,SSpH/C0b,gBAAiBrC,GAAAA,KAKjBsC,iBItKoB,SAAAlqB,GACpB,OAAKA,EAGE3H,IAAAA,IAAM2H,GAAQ,SAASnE,EAAOH,GACpC,IAAIwmB,EAAIpI,mBAAmBpe,GAI3B,OAHIG,MAAAA,IACHqmB,GAAK,IAAMpI,mBAAmBje,IAExBqmB,KACL1oB,KAAK,KARA,IJqKR2wB,iBIzNoB,SAAAC,GACpB,IAAIjJ,EACAkJ,EAEA3uB,EADEe,EAAS,GAEf,IAAK2tB,EACJ,OAAO,MAERjJ,EAAMiJ,EAAY/sB,QAAQ,OACf,IACV+sB,EAAcA,EAAY9sB,OAAO6jB,EAAM,IAGxC,IADA,IAAM5jB,EAAQ6sB,EAAYhX,QAAQ,MAAO,OAAO7Z,MAAM,KAC7CmX,EAAI,EAAGA,EAAInT,EAAMxD,OAAQ2W,IAAK,CAEtC,IAAM4Z,EAAO/sB,EAAMmT,IAGlB2Z,GAFDlJ,EAAMmJ,EAAKjtB,QAAQ,OACR,EACG,CACZitB,EAAKhtB,OAAO,EAAG6jB,GACfmJ,EAAKhtB,OAAO6jB,EAAM,IAIN,CAACmJ,IAECvwB,SAGhB2B,EAAM6uB,mBAAmBF,EAAW,OAMnC5tB,EAAOf,GADJ2uB,EAAWtwB,OAAS,EACTwwB,mBAAmBF,EAAW,IAG9B,MAGhB,OAAO5tB,GJkLP+tB,IAAAA,GACAvwB,aAAAA,EACAwwB,qBAAAA,GACAC,QKvOD,CAKCC,SAAU,GAQV1O,SAbc,SAaL2O,EAAYC,GACpB,IAAIC,EAAU/yB,KAAK4yB,SAASC,GACvBE,IACJA,EAAU/yB,KAAK4yB,SAASC,GAAc,IAEvCE,EAAQpoB,KAAKmoB,IAUdE,WA5Bc,SA4BHH,GACV,OAAO7yB,KAAK4yB,SAASC,IAAe,IAUrCI,OAvCc,SAuCPJ,EAAYK,EAAcpyB,GAEhC,IADA,IAAMiyB,EAAU/yB,KAAKgzB,WAAWH,GACvBla,EAAI,EAAGA,EAAIoa,EAAQ/wB,OAAQ2W,IAC/Boa,EAAQpa,GAAGsa,QACdF,EAAQpa,GAAGsa,OAAOC,EAAcpyB,IAYnCud,OAvDc,SAuDPwU,EAAYK,EAAcpyB,GAEhC,IADA,IAAMiyB,EAAU/yB,KAAKgzB,WAAWH,GACvBla,EAAI,EAAGA,EAAIoa,EAAQ/wB,OAAQ2W,IAC/Boa,EAAQpa,GAAG0F,QACd0U,EAAQpa,GAAG0F,OAAO6U,EAAcpyB,KL6KnC4mB,MAAAA,GACAyL,KAAAA,GACA1F,MAAAA,GAIA2F,SAAUnP,EAAAA,iBAIVuD,YAAAA,EAAAA,YAIA7d,KDtPkBZ,GCsPTzF,ODtPoB,SAAAwN,GAI7B,IAHA,IAAMuiB,EAAaviB,EAAKtP,MAAM,KACxB8xB,EAAOD,EAAW5tB,MAEfkT,EAAI,EAAGA,EAAI0a,EAAWrxB,OAAQ2W,IAEtC,KADA5P,GAAUA,GAAQsqB,EAAW1a,KAE5B,OAAO,EAGT,OAAO5P,GAAQuqB,KCgPf1pB,IDtOkB,SAAAb,GAAO,OAAI,SAAC+H,EAAMhN,GAIpC,IAHA,IAAMuvB,EAAaviB,EAAKtP,MAAM,KACxB8xB,EAAOD,EAAW5tB,MAEfkT,EAAI,EAAGA,EAAI0a,EAAWrxB,OAAQ2W,IACjC5P,EAAQsqB,EAAW1a,MACvB5P,EAAQsqB,EAAW1a,IAAM,IAE1B5P,EAAUA,EAAQsqB,EAAW1a,IAG9B,OADA5P,EAAQuqB,GAAQxvB,EACTA,GC2NF8F,CAAItG,QAITiwB,YAAaC,EAAAA,WAIbC,UAAAA,EAAAA,UACAC,SMnQuB,SAAAC,GAAerwB,OAAO2kB,SAAW0L,GNoQxDC,OM7PqB,WAAQtwB,OAAO2kB,SAAS2L,UN8P7C5sB,aAAc6sB,KAIdC,OAAAA,EAAAA,OAOAC,UAAW,SAACC,EAASC,GACpB,OAAOhxB,EAAAA,EAAAA,gBAAe+wB,EAAS,GAAI,CAClCE,WAAYD,GAAW,IACnB,KAKNE,aAAcC,EAAAA,kBACdC,iBO9Q+B,SAAAL,GAC/B,OAAOM,EAAAA,EAAAA,cAAmB,eAAiBN,GPuR3CrG,QAAAA,KAID4G,EAAAA,EAAAA,WAAU,qBAAqB,SAAA9nB,GAC9B5J,GAAGmE,aAAeyF,EAAEgD,MAGpBhP,QAAQ+P,KAAK,0BAA2B/D,EAAEgD,UQlU3C,iGCAwL,GCmCxL,CACA,mBACA,YACA,6BAEA,OACA,OACA,YACA,4BAEA,cACA,YACA,kCAEA,SACA,aACA,aAEA,gBACA,aACA,kKC5CI3O,GAAU,GAEdA,GAAQ0zB,kBAAoB,KAC5B1zB,GAAQ2zB,cAAgB,KAElB3zB,GAAQ4zB,OAAS,UAAc,KAAM,QAE3C5zB,GAAQ6zB,OAAS,KACjB7zB,GAAQ8zB,mBAAqB,KAEhB,KAAI,KAAS9zB,IAKJ,MAAW,aAAiB,YALlD,gBCFA,IAXgB,QACd,ICTW,WAAa,IAAI+zB,EAAI70B,KAAS80B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,iBAAiBzqB,GAAG,CAAC,MAAQ,SAAS0qB,GAAQ,OAAON,EAAIO,MAAM,YAAY,CAACJ,EAAG,QAAQ,CAACE,YAAY,gCAAgClvB,MAAM,CAAC,KAAO,SAAS,MAAQ,IAAIqvB,SAAS,CAAC,MAASR,EAAIxoB,QAAsBwoB,EAAIS,aAAhBT,EAAI/wB,SAA4B+wB,EAAIU,GAAG,KAAMV,EAAW,QAAEG,EAAG,MAAM,CAACE,YAAY,iDAAiDF,EAAG,aAAa,CAACE,YAAY,0BAA0B,KAChe,IDWpB,EACA,KACA,WACA,MAI8B,QEnBsJ,GCgJtL,CACA,iBAEA,YACA,YACA,SACA,YACA,gBAGA,OACA,UACA,YACA,YAEA,aACA,sBACA,YAEA,QACA,WACA,8BAEA,UACA,WACA,8BAEA,eACA,YACA,WAEA,qBACA,aACA,YAEA,aACA,aACA,aAIA,KAzCA,WA0CA,OACA,WACA,iCACA,kDACA,mBACA,YACA,+BAIA,UACA,iBADA,WAEA,oDAEA,kBAJA,WAKA,qDAEA,gBAPA,WAQA,mDAEA,aAVA,WAWA,gDAEA,YAbA,WAcA,kDAEA,eAhBA,WAiBA,kCAEA,iBAnBA,WAoBA,4CAIA,QA5EA,WA6EA,mBACA,wBAEA,6BAIA,SACA,eADA,WAEA,oCACA,8BAEA,mCAGA,eARA,WASA,yCAEA,OAXA,WAYA,gBACA,oCCtOI,GAAU,GAEd,GAAQV,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAa,IAAIC,EAAI70B,KAAS80B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACQ,IAAI,YAAYxvB,MAAM,CAAC,OAAS,OAAO,KAAO,QAAQ,OAAS6uB,EAAIY,gBAAgBhrB,GAAG,CAAC,OAASoqB,EAAI/gB,SAAS,CAACkhB,EAAG,WAAW,CAAEH,EAAoB,iBAAEG,EAAG,MAAM,CAACE,YAAY,WAAW,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,wCAAwC6yB,EAAG,MAAMH,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACH,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,uCAAuC,gBAAgB0yB,EAAIc,KAAKd,EAAIU,GAAG,KAAKV,EAAIe,GAAIf,EAAY,UAAE,SAASvkB,EAAQwF,GAAO,OAAOkf,EAAG,MAAM,CAACrxB,IAAImS,EAAMof,YAAY,WAAW,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGplB,IAAU0kB,EAAG,WAAUH,EAAIU,GAAG,KAAMV,EAAqB,kBAAEG,EAAG,MAAM,CAACE,YAAY,WAAW,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,iCAAiC6yB,EAAG,MAAMH,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACH,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,oDAAoD,gBAAgB0yB,EAAIc,KAAKd,EAAIU,GAAG,KAAKP,EAAG,MAAM,CAACE,YAAY,SAASlvB,MAAM,CAAC,GAAK,YAAY,CAACgvB,EAAG,MAAM,CAACE,YAAY,gBAAgBlvB,MAAM,CAAC,IAAM,GAAG,IAAM6uB,EAAIgB,eAAehB,EAAIU,GAAG,KAAKP,EAAG,OAAO,CAAChvB,MAAM,CAAC,GAAK,iBAAiB6uB,EAAIU,GAAG,KAAKP,EAAG,MAAM,CAACc,YAAY,CAAC,MAAQ,YAAYjB,EAAIU,GAAG,KAAKP,EAAG,IAAI,CAACE,YAAY,WAAWa,MAAM,CAACC,MAAOnB,EAAIoB,kBAAkB,CAACjB,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAACplB,KAAK,QAAQqlB,QAAQ,UAAUryB,MAAO+wB,EAAQ,KAAEuB,WAAW,SAASZ,IAAI,OAAOxvB,MAAM,CAAC,GAAK,OAAO,KAAO,OAAO,KAAO,OAAO,eAAiB,OAAO,YAAc,MAAM,aAAe6uB,EAAIwB,oBAAsB,KAAO,MAAM,YAAcxB,EAAI1yB,EAAE,OAAQ,qBAAqB,aAAa0yB,EAAI1yB,EAAE,OAAQ,qBAAqB,SAAW,IAAIkzB,SAAS,CAAC,MAASR,EAAQ,MAAGpqB,GAAG,CAAC,OAASoqB,EAAIyB,eAAe,MAAQ,SAASnB,GAAWA,EAAOvZ,OAAO2a,YAAqB1B,EAAI2B,KAAKrB,EAAOvZ,OAAO9X,WAAU+wB,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACE,YAAY,UAAUlvB,MAAM,CAAC,IAAM,SAAS,CAAC6uB,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,2BAA2B0yB,EAAIU,GAAG,KAAKP,EAAG,IAAI,CAACE,YAAY,cAAca,MAAM,CAACC,MAAOnB,EAAIoB,kBAAkB,CAACjB,EAAG,QAAQ,CAACQ,IAAI,WAAWN,YAAY,uBAAuBlvB,MAAM,CAAC,GAAK,WAAW,KAAO6uB,EAAI4B,kBAAkB,KAAO,WAAW,YAAc,MAAM,eAAiB,OAAO,aAAe5B,EAAIwB,oBAAsB,mBAAqB,MAAM,YAAcxB,EAAI1yB,EAAE,OAAQ,YAAY,aAAa0yB,EAAI1yB,EAAE,OAAQ,YAAY,SAAW,MAAM0yB,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACE,YAAY,UAAUlvB,MAAM,CAAC,IAAM,aAAa,CAAC6uB,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,gBAAgB0yB,EAAIU,GAAG,KAAKP,EAAG,SAAS,CAACE,YAAY,kBAAkBlvB,MAAM,CAAC,KAAO,yBAAyB,aAAa6uB,EAAI6B,iBAAmB7B,EAAI1yB,EAAE,OAAQ,iBAAmB0yB,EAAI1yB,EAAE,OAAQ,kBAAkBsI,GAAG,CAAC,MAAQ,SAAS0qB,GAAyD,OAAjDA,EAAO9gB,kBAAkB8gB,EAAOvhB,iBAAwBihB,EAAI8B,eAAexT,MAAM,KAAMC,aAAawT,YAAY/B,EAAIgC,GAAG,CAAC,CAAClzB,IAAI,OAAOmzB,GAAG,WAAW,MAAO,CAAEjC,EAAoB,iBAAEG,EAAG,MAAM,CAAChvB,MAAM,CAAC,KAAO,MAAMgvB,EAAG,SAAS,CAAChvB,MAAM,CAAC,KAAO,QAAQ+wB,OAAM,QAAW,GAAGlC,EAAIU,GAAG,KAAKP,EAAG,cAAc,CAAChvB,MAAM,CAAC,QAAU6uB,EAAIxoB,WAAWwoB,EAAIU,GAAG,KAAMV,EAAmB,gBAAEG,EAAG,IAAI,CAACE,YAAY,4BAA4B,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,gCAAgC,YAAa0yB,EAAgB,aAAEG,EAAG,IAAI,CAACE,YAAY,2BAA2B,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,kBAAkB,YAAY0yB,EAAIc,KAAKd,EAAIU,GAAG,KAAMV,EAAImC,eAAiBnC,EAAImC,cAAgB,IAAMhC,EAAG,IAAI,CAACE,YAAY,wBAAwB,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,4HAA4H,YAAY0yB,EAAIc,KAAKd,EAAIU,GAAG,KAAMV,EAAe,YAAEG,EAAG,QAAQ,CAAChvB,MAAM,CAAC,KAAO,SAAS,KAAO,gBAAgBqvB,SAAS,CAAC,MAAQR,EAAIoC,eAAepC,EAAIc,KAAKd,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAAChvB,MAAM,CAAC,KAAO,SAAS,KAAO,YAAYqvB,SAAS,CAAC,MAAQR,EAAIqC,YAAYrC,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAAChvB,MAAM,CAAC,KAAO,SAAS,KAAO,mBAAmBqvB,SAAS,CAAC,MAAQR,EAAIsC,kBAAkBtC,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAAChvB,MAAM,CAAC,KAAO,SAAS,KAAO,gBAAgBqvB,SAAS,CAAC,MAAQR,EAAIhyB,GAAGmE,gBAAgB6tB,EAAIU,GAAG,KAAMV,EAAe,YAAEG,EAAG,QAAQ,CAAChvB,MAAM,CAAC,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO6uB,EAAIc,MAAM,OACziI,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,mvGEoChC,ulBCvDkM,GD2DlM,CACA,6BACA,YACA,eACA,qBACA,mBAEA,OACA,UACA,YACA,YAEA,aACA,sBACA,YAEA,qBACA,aACA,YAEA,SACA,aACA,YAEA,aACA,aACA,YAEA,wBACA,aACA,aAGA,KAjCA,WAkCA,OACA,mBACA,WACA,sBAGA,SACA,aADA,WACA,WACA,8CAEA,sCACA,kBAEA,OADA,iBACA,KAEA,gBACA,kCACA,mBACA,gBACA,sBAGA,qBAGA,sBAnBA,SAmBA,GACA,IE3FoCyB,EAC7Bp0B,EF0FP,cAOA,OALA,IACA,kBACA,mBAGA,SACA,MACA,SACA,uGAEA,4BAGA,uBAGA,OE7GoCo0B,EF6GpC,EE5GOp0B,GAAMwkB,EAAAA,EAAAA,aAAY,yBAEjB6P,GAAAA,QAAAA,KAAWr0B,EAAK,CAAEo0B,UAAAA,IACvB/wB,MAAK,SAAAixB,GAAI,OAAIA,EAAKp0B,SF0GrB,kBAIA,GAHA,4DACA,kBAEA,2DAEA,MADA,uCACA,OAaA,OAVA,kFACA,uDACA,gBACA,GADA,IAEA,uEAIA,6DACA,iBACA,KAEA,mBAEA,MADA,4CACA,MAGA,KAjEA,SAiEA,GACA,kBACA,6DAOA,gDACA,kBAIA,OAHA,iBACA,uCACA,0CACA,CACA,QACA,YACA,iCACA,UACA,kEACA,4DACA,kDACA,kCAjBA,EAiBA,sCAhBA,yCAgBA,OAjBA,SAqBA,kBAEA,OADA,iBACA,KAEA,mBACA,+BACA,qBAGA,uBApGA,SAoGA,GACA,kCAEA,IEpKqCA,EAC9BF,EFmKP,mBAEA,OEtKqCE,EFsKrC,kBErKOF,GAAMwkB,EAAAA,EAAAA,aAAY,0BAEjB6P,GAAAA,QAAAA,KAAWr0B,EAAK,CAAEE,KAAAA,IACvBmD,MAAK,SAAAixB,GAAI,OAAIA,EAAKp0B,SFmKrB,kBACA,uCACA,0BAEA,mBACA,0DACA,qBAGA,OAnHA,0BGxFI,GAAU,GAEd,GAAQsxB,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAa,IAAIC,EAAI70B,KAAS80B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAASD,EAAI0C,SAAW1C,EAAI2C,cAAgB3C,EAAI4C,uBAAwBzC,EAAG,OAAO,CAACQ,IAAI,YAAYxvB,MAAM,CAAC,OAAS,OAAO,KAAO,SAASyE,GAAG,CAAC,OAAS,SAAS0qB,GAAgC,OAAxBA,EAAOvhB,iBAAwBihB,EAAI/gB,OAAOqP,MAAM,KAAMC,cAAc,CAAC4R,EAAG,WAAW,CAACA,EAAG,IAAI,CAACE,YAAY,wBAAwB,CAACF,EAAG,QAAQ,CAACE,YAAY,UAAUlvB,MAAM,CAAC,IAAM,SAAS,CAAC6uB,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,0BAAyB0yB,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAACplB,KAAK,QAAQqlB,QAAQ,UAAUryB,MAAO+wB,EAAQ,KAAEuB,WAAW,SAASZ,IAAI,OAAOxvB,MAAM,CAAC,GAAK,OAAO,KAAO,OAAO,KAAO,OAAO,aAAe6uB,EAAIwB,oBAAsB,KAAO,MAAM,YAAcxB,EAAI1yB,EAAE,OAAQ,qBAAqB,aAAa0yB,EAAI1yB,EAAE,OAAQ,qBAAqB,SAAW,IAAIkzB,SAAS,CAAC,MAASR,EAAQ,MAAGpqB,GAAG,CAAC,OAAS,SAAS0qB,GAAQ,OAAON,EAAIO,MAAM,kBAAmBP,EAAI2B,OAAO,MAAQ,SAASrB,GAAWA,EAAOvZ,OAAO2a,YAAqB1B,EAAI2B,KAAKrB,EAAOvZ,OAAO9X,aAAY+wB,EAAIU,GAAG,KAAOV,EAAI6C,iBAAmM7C,EAAIc,KAArLX,EAAG,MAAM,CAACE,YAAY,iDAAiD,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,sDAAsD,YAAqB0yB,EAAIU,GAAG,KAAMV,EAAoB,iBAAEG,EAAG,cAAc,CAAChvB,MAAM,CAAC,QAAU6uB,EAAIxoB,SAAS5B,GAAG,CAAC,MAAQoqB,EAAI8C,gBAAgB9C,EAAIc,MAAM,KAAOd,EAAI4C,uBAA6W5C,EAAI0C,SAAY1C,EAAI2C,YAA+W3C,EAAIc,KAAtWX,EAAG,MAAM,CAACE,YAAY,+BAA+B,CAACF,EAAG,eAAe,CAAChvB,MAAM,CAAC,KAAO,QAAQ6uB,EAAIU,GAAG,KAAKP,EAAG,KAAK,CAACH,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,qCAAqC0yB,EAAIU,GAAG,KAAKP,EAAG,IAAI,CAACE,YAAY,aAAa,CAACL,EAAIU,GAAG,SAASV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,4EAA4E,WAAW,GAArtB6yB,EAAG,MAAM,CAACE,YAAY,+BAA+B,CAACF,EAAG,kBAAkB,CAAChvB,MAAM,CAAC,KAAO,QAAQ6uB,EAAIU,GAAG,KAAKP,EAAG,KAAK,CAACH,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,6BAA6B0yB,EAAIU,GAAG,KAAKP,EAAG,IAAI,CAACE,YAAY,aAAa,CAACL,EAAIU,GAAG,SAASV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,kEAAkE,WAAW,KAC9rD,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QEnB0J,GCwE1L,CACA,qBACA,YACA,gBAEA,OACA,UACA,YACA,aAEA,mBACA,YACA,cAGA,KAfA,WAgBA,OACA,SACA,WACA,eACA,qBAGA,OACA,SADA,SACA,GACA,cAGA,SACA,eADA,WAEA,yCAEA,OAJA,WAIA,WACA,gBACA,cACA,gBACA,+CAEA,GACA,gBAGA,4BACA,mCACA,kBACA,wBACA,gDAGA,4BAEA,mBACA,sDAEA,WACA,0BAEA,gDCtHI,GAAU,GAEd,GAAQqyB,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAa,IAAIC,EAAI70B,KAAS80B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACvqB,GAAG,CAAC,OAAS,SAAS0qB,GAAgC,OAAxBA,EAAOvhB,iBAAwBihB,EAAI/gB,OAAOqP,MAAM,KAAMC,cAAc,CAAC4R,EAAG,WAAW,CAACA,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAACplB,KAAK,QAAQqlB,QAAQ,UAAUryB,MAAO+wB,EAAQ,KAAEuB,WAAW,SAASpwB,MAAM,CAAC,GAAK,OAAO,KAAO,OAAO,KAAO,OAAO,eAAiB,MAAM,YAAc6uB,EAAI1yB,EAAE,OAAQ,qBAAqB,aAAa0yB,EAAI1yB,EAAE,OAAQ,qBAAqB,SAAW,IAAIkzB,SAAS,CAAC,MAASR,EAAQ,MAAGpqB,GAAG,CAAC,OAASoqB,EAAIyB,eAAe,MAAQ,SAASnB,GAAWA,EAAOvZ,OAAO2a,YAAqB1B,EAAI2B,KAAKrB,EAAOvZ,OAAO9X,WAAU+wB,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACE,YAAY,UAAUlvB,MAAM,CAAC,IAAM,SAAS,CAAC6uB,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,2BAA2B0yB,EAAIU,GAAG,KAAKP,EAAG,MAAM,CAAChvB,MAAM,CAAC,GAAK,2BAA2B,CAACgvB,EAAG,cAAc,CAAChvB,MAAM,CAAC,MAAQ6uB,EAAI1yB,EAAE,OAAQ,sBAAsB,GAAG0yB,EAAIU,GAAG,KAAsB,iBAAhBV,EAAIvkB,QAA4B0kB,EAAG,IAAI,CAACE,YAAY,UAAU,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,kLAAkL,YAAY6yB,EAAG,MAAMH,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,qDAAqD,YAA6B,eAAhB0yB,EAAIvkB,QAA0B0kB,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,kEAAmE,YAA6B,gBAAhB0yB,EAAIvkB,QAA2B0kB,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,mEAAmE,YAAa0yB,EAAW,QAAEG,EAAG,IAAI,CAACE,YAAY,SAASa,MAAM,CAAC6B,QAAS/C,EAAIn0B,SAASm0B,EAAIc,KAAKd,EAAIU,GAAG,KAAKP,EAAG,IAAI,CAAChvB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAAS0qB,GAAgC,OAAxBA,EAAOvhB,iBAAwBihB,EAAIO,MAAM,YAAY,CAACP,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,kBAAkB,kBACj6D,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,kIE+ChC,QACA,sBACA,YACA,gBAEA,OACA,UACA,YACA,aAEA,qBACA,YACA,cAGA,KAfA,WAgBA,OACA,SACA,WACA,eACA,mBACA,YACA,aACA,aAGA,OACA,SADA,SACA,GACA,cAGA,SACA,OADA,WACA,2JACA,aACA,WACA,aAHA,kBAMA,uCACA,oBACA,oBARA,qBAMA,EANA,EAMA,OAIA,qBAVA,iBAWA,yBACA,kCACA,gBAbA,4BAcA,iBAdA,iBAeA,eAfA,4BAgBA,UAhBA,uBAiBA,iBAjBA,cAmBA,UAnBA,0DAsBA,WACA,+GAvBA,yBAyBA,aAzBA,kQClG2L,kBCWvL,GAAU,GAEd,GAAQqyB,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAa,IAAIC,EAAI70B,KAAS80B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACvqB,GAAG,CAAC,OAAS,SAAS0qB,GAAgC,OAAxBA,EAAOvhB,iBAAwBihB,EAAI/gB,OAAOqP,MAAM,KAAMC,cAAc,CAAC4R,EAAG,WAAW,CAACA,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACE,YAAY,UAAUlvB,MAAM,CAAC,IAAM,aAAa,CAAC6uB,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,oBAAoB0yB,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAACplB,KAAK,QAAQqlB,QAAQ,UAAUryB,MAAO+wB,EAAY,SAAEuB,WAAW,aAAapwB,MAAM,CAAC,GAAK,WAAW,KAAO,WAAW,KAAO,WAAW,aAAe,eAAe,eAAiB,OAAO,YAAc,MAAM,SAAW,GAAG,YAAc6uB,EAAI1yB,EAAE,OAAQ,iBAAiBkzB,SAAS,CAAC,MAASR,EAAY,UAAGpqB,GAAG,CAAC,MAAQ,SAAS0qB,GAAWA,EAAOvZ,OAAO2a,YAAqB1B,EAAI9jB,SAASokB,EAAOvZ,OAAO9X,aAAY+wB,EAAIU,GAAG,KAAMV,EAAa,UAAEG,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,IAAI,CAACH,EAAIU,GAAG,aAAaV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,8NAA8N,cAAc0yB,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAACplB,KAAK,QAAQqlB,QAAQ,UAAUryB,MAAO+wB,EAAW,QAAEuB,WAAW,YAAYlB,YAAY,WAAWlvB,MAAM,CAAC,GAAK,qBAAqB,KAAO,YAAYqvB,SAAS,CAAC,QAAUwC,MAAMC,QAAQjD,EAAIkD,SAASlD,EAAImD,GAAGnD,EAAIkD,QAAQ,OAAO,EAAGlD,EAAW,SAAGpqB,GAAG,CAAC,OAAS,SAAS0qB,GAAQ,IAAI8C,EAAIpD,EAAIkD,QAAQG,EAAK/C,EAAOvZ,OAAOuc,IAAID,EAAKE,QAAuB,GAAGP,MAAMC,QAAQG,GAAK,CAAC,IAAaI,EAAIxD,EAAImD,GAAGC,EAAhB,MAA4BC,EAAKE,QAASC,EAAI,IAAIxD,EAAIkD,QAAQE,EAAIK,OAAO,CAAzE,QAAsFD,GAAK,IAAIxD,EAAIkD,QAAQE,EAAIM,MAAM,EAAEF,GAAKC,OAAOL,EAAIM,MAAMF,EAAI,UAAWxD,EAAIkD,QAAQI,MAAStD,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAAChvB,MAAM,CAAC,IAAM,uBAAuB,CAAC6uB,EAAIU,GAAG,aAAaV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,0BAA2B,gBAAgB0yB,EAAIc,KAAKd,EAAIU,GAAG,KAAKP,EAAG,cAAc,CAAChvB,MAAM,CAAC,QAAU6uB,EAAIxoB,QAAQ,MAAQwoB,EAAI1yB,EAAE,OAAQ,kBAAkB,gBAAgB0yB,EAAI1yB,EAAE,OAAQ,yBAAyB0yB,EAAIU,GAAG,KAAMV,EAAIn0B,OAASm0B,EAAIvkB,QAAS0kB,EAAG,IAAI,CAACe,MAAM,CAAC6B,QAAS/C,EAAIn0B,QAAQ,CAACm0B,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAIvkB,SAAS,YAAYukB,EAAIc,MAAM,OACxlE,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QEgGhC,6BACA,GAAoB,MAAhBrM,GAAMkP,MACV,IACA,4BACA,8BACA,yCACA,SACA,mDAIA,IC9H4K,GD8H5K,CACA,aAEA,YACA,aACA,yBACA,iBACA,mBAGA,KAVA,WAWA,OACA,WACA,iDACA,qBACA,iBAGA,iDACA,qDACA,2DACA,8DACA,qEACA,uEACA,oEACA,sEACA,kEACA,4BACA,iEACA,4EACA,4CACA,mDACA,2DACA,4DAIA,SACA,sBADA,WAEA,4BACA,mCE3JI,GAAU,GAEd,GAAQhE,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,QACd,I9BTW,WAAa,IAAIC,EAAI70B,KAAS80B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAASD,EAAI4D,eAAiB5D,EAAI6D,YAAa1D,EAAG,MAAM,CAACA,EAAG,aAAa,CAAChvB,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,CAAG6uB,EAAI8D,mBAAsB9D,EAAI+D,eAA6C,KAA5B/D,EAAIgE,qBAAqgDhE,EAAIxoB,SAAWwoB,EAAI8D,kBAAmB3D,EAAG,MAAM,CAACrxB,IAAI,QAAQuxB,YAAY,oBAAoB,CAACF,EAAG,wBAAwB,CAAChvB,MAAM,CAAC,SAAW6uB,EAAI2B,KAAK,eAAe3B,EAAIoC,YAAY,wBAAwBpC,EAAIwB,oBAAoB,WAAWxB,EAAI0C,QAAQ,eAAe1C,EAAI2C,YAAY,4BAA4B3C,EAAI4C,wBAAwBhtB,GAAG,CAAC,kBAAkB,SAAS0qB,GAAQN,EAAI2B,KAAKrB,GAAQ,OAAS,SAASA,GAAQN,EAAIxoB,SAAU,MAASwoB,EAAIU,GAAG,KAAKP,EAAG,IAAI,CAAChvB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAAS0qB,GAAQA,EAAOvhB,iBAAiBihB,EAAI8D,mBAAoB,KAAS,CAAC9D,EAAIU,GAAG,aAAaV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,SAAS,eAAe,IAAK0yB,EAAIxoB,SAAWwoB,EAAIiE,iBAAkB9D,EAAG,MAAM,CAACrxB,IAAI,QAAQuxB,YAAY,oBAAoB,CAACF,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAAEL,EAAiB,cAAEG,EAAG,gBAAgB,CAAChvB,MAAM,CAAC,SAAW6uB,EAAI2B,KAAK,sBAAsB3B,EAAIkE,mBAAmBtuB,GAAG,CAAC,kBAAkB,SAAS0qB,GAAQN,EAAI2B,KAAKrB,GAAQ,MAAQ,SAASA,GAAQN,EAAI+D,eAAgB,MAAU/D,EAAIc,MAAM,KAAkC,KAA5Bd,EAAIgE,oBAA4B7D,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAAChvB,MAAM,CAAC,SAAW6uB,EAAI2B,KAAK,wBAAwB3B,EAAIgE,qBAAqBpuB,GAAG,CAAC,kBAAkB,SAAS0qB,GAAQN,EAAI2B,KAAKrB,GAAQ,KAAON,EAAImE,0BAA0B,GAAGnE,EAAIc,KAAntFX,EAAG,MAAM,CAACrxB,IAAI,SAAS,CAACqxB,EAAG,YAAY,CAAChvB,MAAM,CAAC,SAAW6uB,EAAI2B,KAAK,eAAe3B,EAAIoC,YAAY,eAAepC,EAAI6D,YAAY,SAAW7D,EAAIoE,SAAS,OAASpE,EAAIqE,OAAO,iBAAiBrE,EAAImC,cAAc,wBAAwBnC,EAAIwB,qBAAqB5rB,GAAG,CAAC,kBAAkB,SAAS0qB,GAAQN,EAAI2B,KAAKrB,GAAQ,OAAS,SAASA,GAAQN,EAAIxoB,SAAU,MAASwoB,EAAIU,GAAG,KAAMV,EAAIiE,kBAA8C,KAA1BjE,EAAIkE,kBAA0B/D,EAAG,IAAI,CAAChvB,MAAM,CAAC,GAAK,gBAAgB,KAAO6uB,EAAIkE,oBAAoB,CAAClE,EAAIU,GAAG,aAAaV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,qBAAqB,cAAe0yB,EAAIiE,mBAAqBjE,EAAI+D,cAAe5D,EAAG,IAAI,CAAChvB,MAAM,CAAC,GAAK,gBAAgB,KAAO6uB,EAAIkE,mBAAmBtuB,GAAG,CAAC,MAAQ,SAAS0qB,GAAQA,EAAOvhB,iBAAiBihB,EAAI+D,eAAgB,KAAQ,CAAC/D,EAAIU,GAAG,aAAaV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,qBAAqB,cAAc0yB,EAAIc,KAAKd,EAAIU,GAAG,KAAKP,EAAG,MAAMH,EAAIU,GAAG,KAAMV,EAAmB,gBAAE,CAAEA,EAA0B,uBAAEG,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAAEL,EAAmB,gBAAEG,EAAG,IAAI,CAACE,YAAY,SAASa,MAAM,CAAE,0BAA2BlB,EAAIsE,wBAAyBnzB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAAS0qB,GAAQA,EAAOvhB,iBAAiBihB,EAAI8D,mBAAoB,KAAQ,CAAC9D,EAAIU,GAAG,iBAAiBV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,yBAAyB,kBAAkB0yB,EAAIc,OAAOX,EAAG,IAAI,CAAChvB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAAS0qB,GAAQA,EAAOvhB,iBAAiBihB,EAAI8D,mBAAoB,KAAQ,CAAC9D,EAAIU,GAAG,eAAeV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,yBAAyB,iBAAiB0yB,EAAIc,MAAM,MAAuvC,GAAGX,EAAG,MAAM,CAACA,EAAG,aAAa,CAAChvB,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,CAACgvB,EAAG,MAAM,CAACE,YAAY,WAAW,CAACL,EAAIU,GAAG,WAAWV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,6BAA6B6yB,EAAG,MAAMH,EAAIU,GAAG,KAAKP,EAAG,QAAQ,CAACH,EAAIU,GAAGV,EAAIa,GAAGb,EAAI1yB,EAAE,OAAQ,uCAAuC,mBAAmB,KACpwG,I8BWpB,EACA,KACA,KACA,MAI8B,QCMhC,IACCe,KADc,WAEb,MAAO,CACNL,GAAAA,KAGFu2B,QAAS,CACRj3B,EAAG2hB,GAAAA,UAAAA,KAAoBA,IACvBjH,EAAGiH,GAAAA,gBAAAA,KAA0BA,MCD/BuV,EAAAA,QAAAA,MAAUC,KAGV,IADaD,EAAAA,QAAAA,OAAWE,MACbC,OAAO,iFChCdC,QAA0B,GAA4B,KAE1DA,EAAwB9uB,KAAK,CAAC+uB,EAAOv0B,GAAI,soBAAuoB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,8KAA8K,eAAiB,CAAC,m5BAAm5B,WAAa,MAE13D,6ECJIs0B,QAA0B,GAA4B,KAE1DA,EAAwB9uB,KAAK,CAAC+uB,EAAOv0B,GAAI,0GAA2G,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,mDAAmD,eAAiB,CAAC,omBAAomB,WAAa,MAEl7B,4ECJIs0B,QAA0B,GAA4B,KAE1DA,EAAwB9uB,KAAK,CAAC+uB,EAAOv0B,GAAI,sJAAuJ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,6CAA6C,eAAiB,CAAC,2jBAA2jB,WAAa,MAE37B,6ECJIs0B,QAA0B,GAA4B,KAE1DA,EAAwB9uB,KAAK,CAAC+uB,EAAOv0B,GAAI,oDAAqD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,goIAAmnI,WAAa,MAEp3I,6ECJIs0B,QAA0B,GAA4B,KAE1DA,EAAwB9uB,KAAK,CAAC+uB,EAAOv0B,GAAI,2HAA4H,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,8CAA8C,eAAiB,CAAC,i3HAA02H,WAAa,MAEzsI,6ECJIs0B,QAA0B,GAA4B,KAE1DA,EAAwB9uB,KAAK,CAAC+uB,EAAOv0B,GAAI,4KAA6K,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wCAAwC,MAAQ,GAAG,SAAW,6CAA6C,eAAiB,CAAC,65MAAs5M,WAAa,MAEjxN,6BCPA,IAAI0gB,EAAa,EAAQ,OAEzB6T,EAAOC,SAAW9T,EAAoB,SAAKA,GAAYxa,SAAS,CAAC,EAAI,SAASuuB,EAAUC,EAAOC,EAAQC,EAAS72B,GAC5G,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAoa,OAA3ZF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,IACpb,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAsZ,OAA7YF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAiB82B,EAAS,IACta,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAI82B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,+CACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAChJ,yBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,oCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,uCACJ,EAAI,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAI82B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,iBACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,oCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,2BACJ,EAAI,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAsa,OAA7ZF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,IACtb,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAwZ,OAA/YF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,IACxa,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,+CACHN,EAAUc,iBAAiBd,EAAUY,OAAmF,OAA1ER,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAC9K,wDACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,MAAO,oCACT,GAAK,SAAS02B,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQO,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKH,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAwW,OAA/VF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAK45B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,KACtB,OAA5VA,EAASC,EAAeH,EAAQ,MAAMn5B,KAAK45B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,KAClX,GAAK,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,qDACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAChJ,oCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,2CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,4CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,sBACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,mCACHO,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,YACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,uBACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAC7M,UACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,kBACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAsa,OAA7ZF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,QAAU02B,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,IACtb,GAAK,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,2BACHO,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,kCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,yCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,0CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,mDACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,YACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,uBACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAC7M,UACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,gBACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,oDACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,yCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,0CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,sBACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,kCACHO,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IACrN,YACAY,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IACjN,mBACAY,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAChN,UACAY,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IACjN,cACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,qGAC+Y,OAAhZF,EAASC,EAAeH,EAAQ,QAAQn5B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,WAAaA,EAAQ,CAAC,KAAO,OAAO,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,QAAkB82B,EAAS,IACla,yBACJ,GAAK,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC9C,IAAIy3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClO,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,gCACHa,SAASJ,EAA6H,OAAnHA,EAASV,EAAeH,EAAQ,eAA2B,MAAVD,EAAiBI,EAAeJ,EAAO,aAAeA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,YAAY,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASy3B,GACjU,2BACAI,SAASJ,EAAmH,OAAzGA,EAASV,EAAeH,EAAQ,UAAsB,MAAVD,EAAiBI,EAAeJ,EAAO,QAAUA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,OAAO,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASy3B,GAClT,8BACAI,SAASJ,EAAqH,OAA3GA,EAASV,EAAeH,EAAQ,WAAuB,MAAVD,EAAiBI,EAAeJ,EAAO,SAAWA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,QAAQ,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASy3B,GACrT,wCACJ,SAAW,CAAC,EAAE,YAAY,KAAO,SAASf,EAAUC,EAAOC,EAAQC,EAAS72B,GAC1E,IAAI82B,EAAQO,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKH,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAA+W,OAAtWF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAK45B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,KACZ,OAA7WA,EAASC,EAAeH,EAAQ,MAAMn5B,KAAK45B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,QAAU02B,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,KAC7B,OAAhWA,EAASC,EAAeH,EAAQ,MAAMn5B,KAAK45B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,iBAAmBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,KACf,OAAjWA,EAASC,EAAeH,EAAQ,MAAMn5B,KAAK45B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAIn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,KACvX,SAAU,2BC3OZ,IAAInU,EAAa,EAAQ,OAEzB6T,EAAOC,SAAW9T,EAAoB,SAAKA,GAAYxa,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASuuB,EAAUC,EAAOC,EAAQC,EAAS72B,GACzI,IAAIy3B,EAAQV,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,wEACHN,EAAUc,iBAAgO,mBAA7MC,EAA2I,OAAjIA,EAASV,EAAeH,EAAQ,sBAAkC,MAAVD,EAAiBI,EAAeJ,EAAO,oBAAsBA,IAAmBc,EAASf,EAAUgB,MAAMC,eAA+CF,EAAOh6B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,mBAAmB,KAAO,GAAG,KAAOl3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAASy3B,GACnb,mBACJ,SAAU,2BCbZ,IAAI9U,EAAa,EAAQ,OAEzB6T,EAAOC,SAAW9T,EAAoB,SAAKA,GAAYxa,SAAS,CAAC,EAAI,SAASuuB,EAAUC,EAAOC,EAAQC,EAAS72B,GAC5G,IAAIy3B,EAAQV,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,wEACHN,EAAUc,iBAAsO,mBAAnNC,EAAiJ,OAAvIA,EAASV,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBc,EAASf,EAAUgB,MAAMC,eAA+CF,EAAOh6B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,sBAAsB,KAAO,GAAG,KAAOl3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAASy3B,GAC5b,mBACJ,EAAI,SAASf,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAIy3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClO,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,gCACHa,SAASJ,EAAuI,OAA7HA,EAASV,EAAeH,EAAQ,oBAAgC,MAAVD,EAAiBI,EAAeJ,EAAO,kBAAoBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,iBAAiB,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASy3B,GAC9U,KACAI,SAASJ,EAAiJ,OAAvIA,EAASV,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,sBAAsB,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASy3B,GAC7V,gBACJ,EAAI,SAASf,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAI82B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAwV,OAA/UF,EAASC,EAAeH,EAAQ,MAAMn5B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAe,MAAVP,EAAiBI,EAAeJ,EAAO,iBAAmBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,IACxW,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS72B,GAC7C,IAAIy3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClO,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,gCACHa,SAASJ,EAA+I,OAArIA,EAASV,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,qBAAqB,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASy3B,GAC5V,KACAI,SAASJ,EAAiJ,OAAvIA,EAASV,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,sBAAsB,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASy3B,GAC/V,gBACJ,SAAW,CAAC,EAAE,YAAY,KAAO,SAASf,EAAUC,EAAOC,EAAQC,EAAS72B,GAC1E,IAAI82B,EAAQO,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKH,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtI,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,OAAyW,OAAhWF,EAASC,EAAeH,EAAQ,UAAUn5B,KAAK45B,EAAoF,OAA3EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,YAAcA,GAAmBI,EAAeD,EAAO,UAAYA,EAAQ,CAAC,KAAO,SAAS,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUU,KAAK,KAAOp3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,QAAkB82B,EAAS,IACrX,4CACmT,OAAjTA,EAASC,EAAeH,EAAQ,MAAMn5B,KAAK45B,EAAkB,MAAVV,EAAiBI,EAAeJ,EAAO,sBAAwBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,QAAU02B,EAAUS,QAAQ,EAAGn3B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiB82B,EAAS,KACvU,SAAU,2BC3DZ,IAAInU,EAAa,EAAQ,OAEzB6T,EAAOC,SAAW9T,EAAoB,SAAKA,GAAYxa,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASuuB,EAAUC,EAAOC,EAAQC,EAAS72B,GACzI,IAAIy3B,EAAQV,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GACtE,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,yEACHN,EAAUc,iBAAsN,mBAAnMC,EAAiI,OAAvHA,EAASV,EAAeH,EAAQ,iBAA6B,MAAVD,EAAiBI,EAAeJ,EAAO,eAAiBA,IAAmBc,EAASf,EAAUgB,MAAMC,eAA+CF,EAAOh6B,KAAe,MAAVk5B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,cAAc,KAAO,GAAG,KAAOl3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAASy3B,GACpa,mBACJ,SAAU,2BCbZ,IAAI9U,EAAa,EAAQ,OAEzB6T,EAAOC,SAAW9T,EAAoB,SAAKA,GAAYxa,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASuuB,EAAUC,EAAOC,EAAQC,EAAS72B,GACzI,IAAIy3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAASnd,EAAQod,GAClO,GAAIzzB,OAAOmC,UAAUuxB,eAAex5B,KAAKmc,EAAQod,GAC/C,OAAOpd,EAAOod,IAKtB,MAAO,4DACHa,SAASJ,EAA+I,OAArIA,EAASV,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,qBAAqB,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASy3B,GAC1V,wEACAI,SAASJ,EAA+I,OAArIA,EAASV,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,qBAAqB,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASy3B,GAC1V,YACAI,SAASJ,EAA+H,OAArHA,EAASV,EAAeH,EAAQ,gBAA4B,MAAVD,EAAiBI,EAAeJ,EAAO,cAAgBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAOh6B,KAAK45B,EAAO,CAAC,KAAO,aAAa,KAAO,GAAG,KAAOr3B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,QAAUy3B,GACnU,uCACJ,SAAU,2BCjBZ,IAAIK,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASC,EAAeC,GACvB,IAAI/1B,EAAKg2B,EAAsBD,GAC/B,OAAOE,EAAoBj2B,GAE5B,SAASg2B,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEL,EAAKE,GAAM,CACpC,IAAIzuB,EAAI,IAAIlE,MAAM,uBAAyB2yB,EAAM,KAEjD,MADAzuB,EAAE6uB,KAAO,mBACH7uB,EAEP,OAAOuuB,EAAIE,GAEZD,EAAeM,KAAO,WACrB,OAAO90B,OAAO80B,KAAKP,IAEpBC,EAAexsB,QAAU0sB,EACzBzB,EAAOC,QAAUsB,EACjBA,EAAe91B,GAAK,QClShBq2B,EAA2B,GAG/B,SAASJ,EAAoBK,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBr7B,IAAjBs7B,EACH,OAAOA,EAAa/B,QAGrB,IAAID,EAAS8B,EAAyBC,GAAY,CACjDt2B,GAAIs2B,EACJE,QAAQ,EACRhC,QAAS,IAUV,OANAiC,EAAoBH,GAAU96B,KAAK+4B,EAAOC,QAASD,EAAQA,EAAOC,QAASyB,GAG3E1B,EAAOiC,QAAS,EAGTjC,EAAOC,QAIfyB,EAAoBtR,EAAI8R,EC5BxBR,EAAoBS,KAAO,WAC1B,MAAM,IAAItzB,MAAM,mCCDjB6yB,EAAoBU,KAAO,GvFAvBr8B,EAAW,GACf27B,EAAoBW,EAAI,SAASr3B,EAAQs3B,EAAUlF,EAAImF,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,EAAAA,EACnB,IAASxjB,EAAI,EAAGA,EAAIlZ,EAASuC,OAAQ2W,IAAK,CACrCqjB,EAAWv8B,EAASkZ,GAAG,GACvBme,EAAKr3B,EAASkZ,GAAG,GACjBsjB,EAAWx8B,EAASkZ,GAAG,GAE3B,IAJA,IAGIyjB,GAAY,EACP1jB,EAAI,EAAGA,EAAIsjB,EAASh6B,OAAQ0W,MACpB,EAAXujB,GAAsBC,GAAgBD,IAAax1B,OAAO80B,KAAKH,EAAoBW,GAAGM,OAAM,SAAS14B,GAAO,OAAOy3B,EAAoBW,EAAEp4B,GAAKq4B,EAAStjB,OAC3JsjB,EAASM,OAAO5jB,IAAK,IAErB0jB,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACb38B,EAAS68B,OAAO3jB,IAAK,GACrB,IAAIwM,EAAI2R,SACE12B,IAAN+kB,IAAiBzgB,EAASygB,IAGhC,OAAOzgB,EAzBNu3B,EAAWA,GAAY,EACvB,IAAI,IAAItjB,EAAIlZ,EAASuC,OAAQ2W,EAAI,GAAKlZ,EAASkZ,EAAI,GAAG,GAAKsjB,EAAUtjB,IAAKlZ,EAASkZ,GAAKlZ,EAASkZ,EAAI,GACrGlZ,EAASkZ,GAAK,CAACqjB,EAAUlF,EAAImF,IwFJ/Bb,EAAoBve,EAAI,SAAS6c,GAChC,IAAI6C,EAAS7C,GAAUA,EAAO8C,WAC7B,WAAa,OAAO9C,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADA0B,EAAoBqB,EAAEF,EAAQ,CAAEtX,EAAGsX,IAC5BA,GCLRnB,EAAoBqB,EAAI,SAAS9C,EAAS+C,GACzC,IAAI,IAAI/4B,KAAO+4B,EACXtB,EAAoBC,EAAEqB,EAAY/4B,KAASy3B,EAAoBC,EAAE1B,EAASh2B,IAC5E8C,OAAOk2B,eAAehD,EAASh2B,EAAK,CAAEi5B,YAAY,EAAMjzB,IAAK+yB,EAAW/4B,MCJ3Ey3B,EAAoBxQ,EAAI,WACvB,GAA0B,iBAAfiS,WAAyB,OAAOA,WAC3C,IACC,OAAO78B,MAAQ,IAAI88B,SAAS,cAAb,GACd,MAAOrwB,GACR,GAAsB,iBAAXnJ,OAAqB,OAAOA,QALjB,GCAxB83B,EAAoBC,EAAI,SAAS0B,EAAKvmB,GAAQ,OAAO/P,OAAOmC,UAAUuxB,eAAex5B,KAAKo8B,EAAKvmB,ICC/F4kB,EAAoBjW,EAAI,SAASwU,GACX,oBAAXqD,QAA0BA,OAAOC,aAC1Cx2B,OAAOk2B,eAAehD,EAASqD,OAAOC,YAAa,CAAEn5B,MAAO,WAE7D2C,OAAOk2B,eAAehD,EAAS,aAAc,CAAE71B,OAAO,KCLvDs3B,EAAoB8B,IAAM,SAASxD,GAGlC,OAFAA,EAAO9Y,MAAQ,GACV8Y,EAAO3c,WAAU2c,EAAO3c,SAAW,IACjC2c,GCHR0B,EAAoB1iB,EAAI,gBCAxB0iB,EAAoBlW,EAAInW,SAASouB,SAAWhzB,KAAK8d,SAASnjB,KAK1D,IAAIs4B,EAAkB,CACrB,KAAM,GAaPhC,EAAoBW,EAAErjB,EAAI,SAAS2kB,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4Br6B,GAC/D,IAKIu4B,EAAU4B,EALVrB,EAAW94B,EAAK,GAChBs6B,EAAct6B,EAAK,GACnBu6B,EAAUv6B,EAAK,GAGIyV,EAAI,EAC3B,GAAGqjB,EAAS0B,MAAK,SAASv4B,GAAM,OAA+B,IAAxBi4B,EAAgBj4B,MAAe,CACrE,IAAIs2B,KAAY+B,EACZpC,EAAoBC,EAAEmC,EAAa/B,KACrCL,EAAoBtR,EAAE2R,GAAY+B,EAAY/B,IAGhD,GAAGgC,EAAS,IAAI/4B,EAAS+4B,EAAQrC,GAGlC,IADGmC,GAA4BA,EAA2Br6B,GACrDyV,EAAIqjB,EAASh6B,OAAQ2W,IACzB0kB,EAAUrB,EAASrjB,GAChByiB,EAAoBC,EAAE+B,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOjC,EAAoBW,EAAEr3B,IAG1Bi5B,EAAqBxzB,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FwzB,EAAmBvzB,QAAQkzB,EAAqBl6B,KAAK,KAAM,IAC3Du6B,EAAmBhzB,KAAO2yB,EAAqBl6B,KAAK,KAAMu6B,EAAmBhzB,KAAKvH,KAAKu6B,OClDvFvC,EAAoBwC,QAAKx9B,ECGzB,IAAIy9B,EAAsBzC,EAAoBW,OAAE37B,EAAW,CAAC,OAAO,WAAa,OAAOg7B,EAAoB,UAC3GyC,EAAsBzC,EAAoBW,EAAE8B","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=a436fed0&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?934e","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=e3d85cce&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?9298","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=8c61dc2a&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?a625","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?b589","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=9caa2c8a&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?5cc3","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?8b77","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=e3d85cce&scoped=true&lang=scss&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=9caa2c8a&scoped=true&lang=css&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {{type: Int, confirm: String, cancel: String, confirmClasses: String}} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$('body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\t$('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\t\tself.filepicker.filesClient.getFolderContents(dir).then(function(status, files) {\n\t\t\tself.filelist = files\n\t\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (advancedFilter) {\n\t\t\t\tfiles = files.filter(advancedFilter)\n\t\t\t}\n\n\t\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t\t// Otherwise just show the hidden files\n\t\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\t\tif (!showHidden) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tvar Comparators = {\n\t\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t\t},\n\t\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t\t},\n\t\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\t\tfiles = files.sort(function(file1, file2) {\n\t\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t\t}\n\n\t\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\n\t\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t\t})\n\n\t\t\tself._fillSlug()\n\n\t\t\tif (files.length === 0) {\n\t\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\t\tself.$fileListHeader.hide()\n\t\t\t} else {\n\t\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\t\tself.$fileListHeader.show()\n\t\t\t}\n\n\t\t\tself.$filelist.empty();\n\n\t\t\t$.each(files, function(idx, entry) {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t\tvar simpleSize, sizeColor\n\t\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t\t} else {\n\t\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\t\tsizeColor = 80\n\t\t\t\t}\n\n\t\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t\t// for ellipsis\n\t\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t\t// leave maximum 10 letters\n\t\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t\t} else {\n\t\t\t\t\tvar filename1 = entry.name\n\t\t\t\t\tvar filename2 = ''\n\t\t\t\t}\n\n\t\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\t\ttype: entry.type,\n\t\t\t\t\tdir: dir,\n\t\t\t\t\tfilename: entry.name,\n\t\t\t\t\tfilename1: filename1,\n\t\t\t\t\tfilename2: filename2,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\t\tsize: simpleSize,\n\t\t\t\t\tsizeColor: sizeColor,\n\t\t\t\t\ticon: entry.icon\n\t\t\t\t})\n\t\t\t\tif (entry.type === 'file') {\n\t\t\t\t\tvar urlSpec = {\n\t\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\t\tx: 100,\n\t\t\t\t\t\ty: 100\n\t\t\t\t\t}\n\t\t\t\t\tvar img = new Image()\n\t\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\t\timg.onload = function() {\n\t\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\timg.src = previewUrl\n\t\t\t\t}\n\t\t\t\tself.$filelist.append($row)\n\t\t\t})\n\n\t\t\tself.$filelistContainer.removeClass('icon-loading')\n\t\t})\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t * @param {string} message    Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t * @param {object} response    Response of the server\n\t * @param {object} response.data    Data of the servers response\n\t * @param {string} response.data.message    Plain text message to display (no HTML allowed)\n\t * @param {string} response.status    is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t * @param {object} response    Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param  {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {object.<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {object.<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{key:\"login\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Login form is disabled.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<div class=\"submit-wrapper\" @click=\"$emit('click')\">\n\t\t<input type=\"submit\"\n\t\t\tclass=\"submit-wrapper__input primary\"\n\t\t\ttitle=\"\"\n\t\t\t:value=\"!loading ? value : valueLoading\">\n\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t</div>\n</template>\n\n<script>\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.submit-wrapper {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 10px 5px;\n    position: relative;\n\tmargin: 0 auto;\n\n\t&__input {\n\t\twidth: 260px;\n\t\theight: 50px;\n\t}\n\n\t&__icon {\n\t\tdisplay: flex;\n\t\tposition: absolute;\n\t\tright: 24px;\n\t\ttransition: right 100ms ease-in-out;\n\t\t/* The submit icon is positioned on the submit button.\n\t\tFrom the user point of view the icon is part of the\n\t\tbutton, so the clicks on the icon have to be\n\t\tapplied to the button instead. */\n\t\tpointer-events: none;\n\t}\n\n\t&__input:hover + &__icon:not(.icon-loading-small-dark),\n\t&__input:focus + &__icon:not(.icon-loading-small-dark),\n\t&__input:active + &__icon:not(.icon-loading-small-dark) {\n\t\tright: 20px;\n\t}\n}\n</style>\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=e3d85cce&scoped=true&lang=scss&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=e3d85cce&scoped=true&lang=scss&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=e3d85cce&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=e3d85cce&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"e3d85cce\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"submit-wrapper\",on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('input',{staticClass:\"submit-wrapper__input primary\",attrs:{\"type\":\"submit\",\"title\":\"\"},domProps:{\"value\":!_vm.loading ? _vm.value : _vm.valueLoading}}),_vm._v(\" \"),(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset>\n\t\t\t<div v-if=\"apacheAuthFailed\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'Server side authentication failed!') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ message }}<br>\n\t\t\t</div>\n\t\t\t<div v-if=\"internalException\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'An internal error occurred.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<p class=\"grouptop\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\n\t\t\t<p class=\"groupbottom\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tref=\"password\"\n\t\t\t\t\t:type=\"passwordInputType\"\n\t\t\t\t\tclass=\"password-with-toggle\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Password')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Password')\"\n\t\t\t\t\trequired>\n\t\t\t\t<label for=\"password\"\n\t\t\t\t\tclass=\"infield\">{{ t('core', 'Password') }}</label>\n\t\t\t\t<Button class=\"toggle-password\"\n\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t:aria-label=\"isPasswordHidden ? t('core', 'Show password') : t('core', 'Hide password')\"\n\t\t\t\t\t@click.stop.prevent=\"togglePassword\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Eye v-if=\"isPasswordHidden\" :size=\"20\" />\n\t\t\t\t\t\t<EyeOff v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\t\t\t</p>\n\n\t\t\t<LoginButton :loading=\"loading\" />\n\n\t\t\t<p v-if=\"invalidPassword\"\n\t\t\t\tclass=\"warning wrongPasswordMsg\">\n\t\t\t\t{{ t('core', 'Wrong username or password.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"userDisabled\"\n\t\t\t\tclass=\"warning userDisabledMsg\">\n\t\t\t\t{{ t('core', 'User disabled') }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"throttleDelay && throttleDelay > 5000\"\n\t\t\t\tclass=\"warning throttledMsg\">\n\t\t\t\t{{ t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.') }}\n\t\t\t</p>\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport Eye from 'vue-material-design-icons/Eye'\nimport EyeOff from 'vue-material-design-icons/EyeOff'\n\nimport LoginButton from './LoginButton'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tButton,\n\t\tEye,\n\t\tEyeOff,\n\t\tLoginButton,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tpasswordInputType: 'password',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t\tisPasswordHidden() {\n\t\t\treturn this.passwordInputType === 'password'\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.focus()\n\t\t} else {\n\t\t\tthis.$refs.password.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\ttogglePassword() {\n\t\t\tif (this.passwordInputType === 'password') {\n\t\t\t\tthis.passwordInputType = 'text'\n\t\t\t} else {\n\t\t\t\tthis.passwordInputType = 'password'\n\t\t\t}\n\t\t},\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.toggle-password {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 10px;\n\tcolor: var(--color-text-lighter);\n}\n</style>\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=8c61dc2a&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8c61dc2a\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',[(_vm.apacheAuthFailed)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Server side authentication failed!'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.messages),function(message,index){return _c('div',{key:index,staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(message)),_c('br')])}),_vm._v(\" \"),(_vm.internalException)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'An internal error occurred.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('p',{staticClass:\"grouptop\",class:{shake: _vm.invalidPassword}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('p',{staticClass:\"groupbottom\",class:{shake: _vm.invalidPassword}},[_c('input',{ref:\"password\",staticClass:\"password-with-toggle\",attrs:{\"id\":\"password\",\"type\":_vm.passwordInputType,\"name\":\"password\",\"autocorrect\":\"off\",\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"placeholder\":_vm.t('core', 'Password'),\"aria-label\":_vm.t('core', 'Password'),\"required\":\"\"}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'Password')))]),_vm._v(\" \"),_c('Button',{staticClass:\"toggle-password\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.isPasswordHidden ? _vm.t('core', 'Show password') : _vm.t('core', 'Hide password')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePassword.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isPasswordHidden)?_c('Eye',{attrs:{\"size\":20}}):_c('EyeOff',{attrs:{\"size\":20}})]},proxy:true}])})],1),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.invalidPassword)?_c('p',{staticClass:\"warning wrongPasswordMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Wrong username or password.'))+\"\\n\\t\\t\")]):(_vm.userDisabled)?_c('p',{staticClass:\"warning userDisabledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'User disabled'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.throttleDelay && _vm.throttleDelay > 5000)?_c('p',{staticClass:\"warning throttledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst location = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\twindow.location.href = location\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"adf4afc4\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"-->\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"update\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message\"\n\t\t\t\tclass=\"update\"\n\t\t\t\t:class=\"{warning: error}\" />\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=9caa2c8a&scoped=true&lang=css&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=9caa2c8a&scoped=true&lang=css&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=9caa2c8a&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=9caa2c8a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9caa2c8a\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"off\",\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"reset-password-wrapper\"}},[_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}})],1),_vm._v(\" \"),(_vm.message === 'send-success')?_c('p',{staticClass:\"update\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('p',{staticClass:\"update warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('p',{staticClass:\"update warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message)?_c('p',{staticClass:\"update\",class:{warning: _vm.error}}):_vm._e(),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4dc21d74\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\"\n\t\t\t\tkey=\"login\">\n\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<br>\n\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a v-else\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t</a>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a href=\"#\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n\t<div v-else>\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div class=\"warning\">\n\t\t\t\t{{ t('core', 'Login form is disabled.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style>\n\t.fade-enter-active, .fade-leave-active {\n\t\ttransition: opacity .3s;\n\t}\n\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\t\topacity: 0;\n\t}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","\n      import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=css&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=css&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=a436fed0&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".submit-wrapper[data-v-e3d85cce]{display:flex;align-items:center;justify-content:center;padding:10px 5px;position:relative;margin:0 auto}.submit-wrapper__input[data-v-e3d85cce]{width:260px;height:50px}.submit-wrapper__icon[data-v-e3d85cce]{display:flex;position:absolute;right:24px;transition:right 100ms ease-in-out;pointer-events:none}.submit-wrapper__input:hover+.submit-wrapper__icon[data-v-e3d85cce]:not(.icon-loading-small-dark),.submit-wrapper__input:focus+.submit-wrapper__icon[data-v-e3d85cce]:not(.icon-loading-small-dark),.submit-wrapper__input:active+.submit-wrapper__icon[data-v-e3d85cce]:not(.icon-loading-small-dark){right:20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AA8DA,iCACI,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CACH,aAAA,CAEA,wCACC,WAAA,CACA,WAAA,CAGD,uCACC,YAAA,CACA,iBAAA,CACA,UAAA,CACA,kCAAA,CAKA,mBAAA,CAGD,uSAGC,UAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.submit-wrapper {\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    padding: 10px 5px;\\n    position: relative;\\n\\tmargin: 0 auto;\\n\\n\\t&__input {\\n\\t\\twidth: 260px;\\n\\t\\theight: 50px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tdisplay: flex;\\n\\t\\tposition: absolute;\\n\\t\\tright: 24px;\\n\\t\\ttransition: right 100ms ease-in-out;\\n\\t\\t/* The submit icon is positioned on the submit button.\\n\\t\\tFrom the user point of view the icon is part of the\\n\\t\\tbutton, so the clicks on the icon have to be\\n\\t\\tapplied to the button instead. */\\n\\t\\tpointer-events: none;\\n\\t}\\n\\n\\t&__input:hover + &__icon:not(.icon-loading-small-dark),\\n\\t&__input:focus + &__icon:not(.icon-loading-small-dark),\\n\\t&__input:active + &__icon:not(.icon-loading-small-dark) {\\n\\t\\tright: 20px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".toggle-password[data-v-8c61dc2a]{position:absolute;top:6px;right:10px;color:var(--color-text-lighter)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AAwPA,kCACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.toggle-password {\\n\\tposition: absolute;\\n\\ttop: 6px;\\n\\tright: 10px;\\n\\tcolor: var(--color-text-lighter);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.update[data-v-9caa2c8a] {\\n\\twidth: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\";AAwIA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n  -\\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n  -\\n  - @license GNU AGPL version 3 or any later version\\n  -\\n  - This program is free software: you can redistribute it and/or modify\\n  - it under the terms of the GNU Affero General Public License as\\n  - published by the Free Software Foundation, either version 3 of the\\n  - License, or (at your option) any later version.\\n  -\\n  - This program is distributed in the hope that it will be useful,\\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n  - GNU Affero General Public License for more details.\\n  -\\n  - You should have received a copy of the GNU Affero General Public License\\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\\n  -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<input id=\\\"user\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"user\\\"\\n\\t\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\t\\tname=\\\"user\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"off\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\t:aria-label=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t@change=\\\"updateUsername\\\">\\n\\t\\t\\t\\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\\n\\t\\t\\t\\tautocomplete=\\\"<?php p($_['login_form_autocomplete']); ?>\\\" autocapitalize=\\\"none\\\" autocorrect=\\\"off\\\"-->\\n\\t\\t\\t\\t<label for=\\\"user\\\" class=\\\"infield\\\">{{ t('core', 'Username or email') }}</label>\\n\\t\\t\\t</p>\\n\\t\\t\\t<div id=\\\"reset-password-wrapper\\\">\\n\\t\\t\\t\\t<LoginButton :value=\\\"t('core', 'Reset password')\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<p v-if=\\\"message === 'send-success'\\\"\\n\\t\\t\\t\\tclass=\\\"update\\\">\\n\\t\\t\\t\\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\\n\\t\\t\\t\\t<br>\\n\\t\\t\\t\\t{{ t('core', 'If it is not there ask your local administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'send-error'\\\"\\n\\t\\t\\t\\tclass=\\\"update warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Couldn\\\\'t send reset email. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'reset-error'\\\"\\n\\t\\t\\t\\tclass=\\\"update warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message\\\"\\n\\t\\t\\t\\tclass=\\\"update\\\"\\n\\t\\t\\t\\t:class=\\\"{warning: error}\\\" />\\n\\n\\t\\t\\t<a href=\\\"#\\\"\\n\\t\\t\\t\\t@click.prevent=\\\"$emit('abort')\\\">\\n\\t\\t\\t\\t{{ t('core', 'Back to login') }}\\n\\t\\t\\t</a>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\nimport { generateUrl } from '@nextcloud/router'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'ResetPassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordLink: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tupdateUsername() {\\n\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t},\\n\\t\\tsubmit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\t\\t\\tconst url = generateUrl('/lostpassword/email')\\n\\n\\t\\t\\tconst data = {\\n\\t\\t\\t\\tuser: this.user,\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn axios.post(url, data)\\n\\t\\t\\t\\t.then(resp => resp.data)\\n\\t\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t\\tif (data.status !== 'success') {\\n\\t\\t\\t\\t\\t\\tthrow new Error(`got status ${data.status}`)\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(e => {\\n\\t\\t\\t\\t\\tconsole.error('could not send reset email request', e)\\n\\n\\t\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\t\\tthis.message = 'send-error'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.then(() => { this.loading = false })\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.update {\\n\\t\\twidth: auto;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n  -\\n  - @author Julius Härtl <jus@bitgrid.net>\\n  -\\n  - @license GNU AGPL version 3 or any later version\\n  -\\n  - This program is free software: you can redistribute it and/or modify\\n  - it under the terms of the GNU Affero General Public License as\\n  - published by the Free Software Foundation, either version 3 of the\\n  - License, or (at your option) any later version.\\n  -\\n  - This program is distributed in the hope that it will be useful,\\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n  - GNU Affero General Public License for more details.\\n  -\\n  - You should have received a copy of the GNU Affero General Public License\\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n  -\\n  -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\";AA6KA;CACA,uBAAA;AACA;AACA;CACA,UAAA;AACA\",\"sourcesContent\":[\"<!--\\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n  -\\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n  -\\n  - @license GNU AGPL version 3 or any later version\\n  -\\n  - This program is free software: you can redistribute it and/or modify\\n  - it under the terms of the GNU Affero General Public License as\\n  - published by the Free Software Foundation, either version 3 of the\\n  - License, or (at your option) any later version.\\n  -\\n  - This program is distributed in the hope that it will be useful,\\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n  - GNU Affero General Public License for more details.\\n  -\\n  - You should have received a copy of the GNU Affero General Public License\\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\\n  -->\\n\\n<template>\\n\\t<div v-if=\\\"!hideLoginForm || directLogin\\\">\\n\\t\\t<transition name=\\\"fade\\\" mode=\\\"out-in\\\">\\n\\t\\t\\t<div v-if=\\\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\\\"\\n\\t\\t\\t\\tkey=\\\"login\\\">\\n\\t\\t\\t\\t<LoginForm :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:redirect-url=\\\"redirectUrl\\\"\\n\\t\\t\\t\\t\\t:direct-login=\\\"directLogin\\\"\\n\\t\\t\\t\\t\\t:messages=\\\"messages\\\"\\n\\t\\t\\t\\t\\t:errors=\\\"errors\\\"\\n\\t\\t\\t\\t\\t:throttle-delay=\\\"throttleDelay\\\"\\n\\t\\t\\t\\t\\t:auto-complete-allowed=\\\"autoCompleteAllowed\\\"\\n\\t\\t\\t\\t\\t@submit=\\\"loading = true\\\" />\\n\\t\\t\\t\\t<a v-if=\\\"canResetPassword && resetPasswordLink !== ''\\\"\\n\\t\\t\\t\\t\\tid=\\\"lost-password\\\"\\n\\t\\t\\t\\t\\t:href=\\\"resetPasswordLink\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Forgot password?') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t<a v-else-if=\\\"canResetPassword && !resetPassword\\\"\\n\\t\\t\\t\\t\\tid=\\\"lost-password\\\"\\n\\t\\t\\t\\t\\t:href=\\\"resetPasswordLink\\\"\\n\\t\\t\\t\\t\\t@click.prevent=\\\"resetPassword = true\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Forgot password?') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t<br>\\n\\t\\t\\t\\t<template v-if=\\\"hasPasswordless\\\">\\n\\t\\t\\t\\t\\t<div v-if=\\\"countAlternativeLogins\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"alternative-logins\\\">\\n\\t\\t\\t\\t\\t\\t<a v-if=\\\"hasPasswordless\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"button\\\"\\n\\t\\t\\t\\t\\t\\t\\t:class=\\\"{ 'single-alt-login-option': countAlternativeLogins }\\\"\\n\\t\\t\\t\\t\\t\\t\\thref=\\\"#\\\"\\n\\t\\t\\t\\t\\t\\t\\t@click.prevent=\\\"passwordlessLogin = true\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ t('core', 'Log in with a device') }}\\n\\t\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<a v-else\\n\\t\\t\\t\\t\\t\\thref=\\\"#\\\"\\n\\t\\t\\t\\t\\t\\t@click.prevent=\\\"passwordlessLogin = true\\\">\\n\\t\\t\\t\\t\\t\\t{{ t('core', 'Log in with a device') }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"!loading && passwordlessLogin\\\"\\n\\t\\t\\t\\tkey=\\\"reset\\\"\\n\\t\\t\\t\\tclass=\\\"login-additional\\\">\\n\\t\\t\\t\\t<PasswordLessLoginForm :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:redirect-url=\\\"redirectUrl\\\"\\n\\t\\t\\t\\t\\t:auto-complete-allowed=\\\"autoCompleteAllowed\\\"\\n\\t\\t\\t\\t\\t:is-https=\\\"isHttps\\\"\\n\\t\\t\\t\\t\\t:is-localhost=\\\"isLocalhost\\\"\\n\\t\\t\\t\\t\\t:has-public-key-credential=\\\"hasPublicKeyCredential\\\"\\n\\t\\t\\t\\t\\t@submit=\\\"loading = true\\\" />\\n\\t\\t\\t\\t<a href=\\\"#\\\" @click.prevent=\\\"passwordlessLogin = false\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Back') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"!loading && canResetPassword\\\"\\n\\t\\t\\t\\tkey=\\\"reset\\\"\\n\\t\\t\\t\\tclass=\\\"login-additional\\\">\\n\\t\\t\\t\\t<div class=\\\"lost-password-container\\\">\\n\\t\\t\\t\\t\\t<ResetPassword v-if=\\\"resetPassword\\\"\\n\\t\\t\\t\\t\\t\\t:username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t\\t:reset-password-link=\\\"resetPasswordLink\\\"\\n\\t\\t\\t\\t\\t\\t@abort=\\\"resetPassword = false\\\" />\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"resetPasswordTarget !== ''\\\">\\n\\t\\t\\t\\t<UpdatePassword :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:reset-password-target=\\\"resetPasswordTarget\\\"\\n\\t\\t\\t\\t\\t@done=\\\"passwordResetFinished\\\" />\\n\\t\\t\\t</div>\\n\\t\\t</transition>\\n\\t</div>\\n\\t<div v-else>\\n\\t\\t<transition name=\\\"fade\\\" mode=\\\"out-in\\\">\\n\\t\\t\\t<div class=\\\"warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Login form is disabled.') }}<br>\\n\\t\\t\\t\\t<small>{{ t('core', 'Please contact your administrator.') }}\\n\\t\\t\\t\\t</small>\\n\\t\\t\\t</div>\\n\\t\\t</transition>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport { loadState } from '@nextcloud/initial-state'\\nimport queryString from 'query-string'\\n\\nimport LoginForm from '../components/login/LoginForm.vue'\\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\\nimport ResetPassword from '../components/login/ResetPassword.vue'\\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\\n\\nconst query = queryString.parse(location.search)\\nif (query.clear === '1') {\\n\\ttry {\\n\\t\\twindow.localStorage.clear()\\n\\t\\twindow.sessionStorage.clear()\\n\\t\\tconsole.debug('Browser storage cleared')\\n\\t} catch (e) {\\n\\t\\tconsole.error('Could not clear browser storage', e)\\n\\t}\\n}\\n\\nexport default {\\n\\tname: 'Login',\\n\\n\\tcomponents: {\\n\\t\\tLoginForm,\\n\\t\\tPasswordLessLoginForm,\\n\\t\\tResetPassword,\\n\\t\\tUpdatePassword,\\n\\t},\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tloading: false,\\n\\t\\t\\tuser: loadState('core', 'loginUsername', ''),\\n\\t\\t\\tpasswordlessLogin: false,\\n\\t\\t\\tresetPassword: false,\\n\\n\\t\\t\\t// Initial data\\n\\t\\t\\terrors: loadState('core', 'loginErrors', []),\\n\\t\\t\\tmessages: loadState('core', 'loginMessages', []),\\n\\t\\t\\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\\n\\t\\t\\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\\n\\t\\t\\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\\n\\t\\t\\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\\n\\t\\t\\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\\n\\t\\t\\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\\n\\t\\t\\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\\n\\t\\t\\tdirectLogin: query.direct === '1',\\n\\t\\t\\thasPasswordless: loadState('core', 'webauthn-available', false),\\n\\t\\t\\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\\n\\t\\t\\tisHttps: window.location.protocol === 'https:',\\n\\t\\t\\tisLocalhost: window.location.hostname === 'localhost',\\n\\t\\t\\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\\n\\t\\t\\thideLoginForm: loadState('core', 'hideLoginForm', false),\\n\\t\\t}\\n\\t},\\n\\n\\tmethods: {\\n\\t\\tpasswordResetFinished() {\\n\\t\\t\\tthis.resetPasswordTarget = ''\\n\\t\\t\\tthis.directLogin = true\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style>\\n\\t.fade-enter-active, .fade-leave-active {\\n\\t\\ttransition: opacity .3s;\\n\\t}\\n\\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\t\\topacity: 0;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32 1x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=64 2x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32 1x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=64 2x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n    + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n    + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n    + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\" title=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n    + \"\\\" alt=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t<a class=\\\"body\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n    + \"</div>\\n\t</a>\\n  \t<a class=\\\"top-action\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\" title=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n  \t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n    + \"\\\" alt=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n    + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<a class=\\\"second-action\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\" title=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n    + \"\\\" alt=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n    + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n    + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n    + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n    + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n    + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n    + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"footer\\\"><a href=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n    + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"footer\\\"><a href=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n    + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n    + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n    + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n    + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4577;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4577: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(40199); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","$event","$emit","domProps","valueLoading","_v","ref","loginActionUrl","_s","_e","_l","loadingIcon","staticStyle","class","shake","invalidPassword","directives","rawName","expression","autoCompleteAllowed","updateUsername","composing","user","passwordInputType","isPasswordHidden","togglePassword","scopedSlots","_u","fn","proxy","throttleDelay","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","warning","Array","isArray","proceed","_i","$$a","$$el","$$c","checked","$$i","concat","slice","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","messages","errors","countAlternativeLogins","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"core-login.js?v=135225a2b2931c08df12","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=412afccc&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=67db536a&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?9298","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=8c61dc2a&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?a625","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7b06","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=301e39ac&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?5cc3","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?7b85","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=301e39ac&scoped=true&lang=css&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {{type: Int, confirm: String, cancel: String, confirmClasses: String}} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$('body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\t$('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\t\tself.filepicker.filesClient.getFolderContents(dir).then(function(status, files) {\n\t\t\tself.filelist = files\n\t\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (advancedFilter) {\n\t\t\t\tfiles = files.filter(advancedFilter)\n\t\t\t}\n\n\t\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t\t// Otherwise just show the hidden files\n\t\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\t\tif (!showHidden) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tvar Comparators = {\n\t\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t\t},\n\t\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t\t},\n\t\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\t\tfiles = files.sort(function(file1, file2) {\n\t\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t\t}\n\n\t\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\n\t\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t\t})\n\n\t\t\tself._fillSlug()\n\n\t\t\tif (files.length === 0) {\n\t\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\t\tself.$fileListHeader.hide()\n\t\t\t} else {\n\t\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\t\tself.$fileListHeader.show()\n\t\t\t}\n\n\t\t\tself.$filelist.empty();\n\n\t\t\t$.each(files, function(idx, entry) {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t\tvar simpleSize, sizeColor\n\t\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t\t} else {\n\t\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\t\tsizeColor = 80\n\t\t\t\t}\n\n\t\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t\t// for ellipsis\n\t\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t\t// leave maximum 10 letters\n\t\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t\t} else {\n\t\t\t\t\tvar filename1 = entry.name\n\t\t\t\t\tvar filename2 = ''\n\t\t\t\t}\n\n\t\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\t\ttype: entry.type,\n\t\t\t\t\tdir: dir,\n\t\t\t\t\tfilename: entry.name,\n\t\t\t\t\tfilename1: filename1,\n\t\t\t\t\tfilename2: filename2,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\t\tsize: simpleSize,\n\t\t\t\t\tsizeColor: sizeColor,\n\t\t\t\t\ticon: entry.icon\n\t\t\t\t})\n\t\t\t\tif (entry.type === 'file') {\n\t\t\t\t\tvar urlSpec = {\n\t\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\t\tx: 100,\n\t\t\t\t\t\ty: 100\n\t\t\t\t\t}\n\t\t\t\t\tvar img = new Image()\n\t\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\t\timg.onload = function() {\n\t\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\timg.src = previewUrl\n\t\t\t\t}\n\t\t\t\tself.$filelist.append($row)\n\t\t\t})\n\n\t\t\tself.$filelistContainer.removeClass('icon-loading')\n\t\t})\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t * @param {string} message    Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t * @param {object} response    Response of the server\n\t * @param {object} response.data    Data of the servers response\n\t * @param {string} response.data.message    Plain text message to display (no HTML allowed)\n\t * @param {string} response.status    is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector    Placeholder to display the message in\n\t * @param {object} response    Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param  {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {object.<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {object.<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"guest-box\",attrs:{\"id\":\"login\"}},[(!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Login form is disabled.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\\t\")])])])],1),_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('Button',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"primary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href},on:{\"click\":function($event){return _vm.goTo(alternativeLogin.href)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<Button type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</Button>\n</template>\n\n<script>\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=67db536a&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Button',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset>\n\t\t\t<div v-if=\"apacheAuthFailed\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'Server side authentication failed!') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ message }}<br>\n\t\t\t</div>\n\t\t\t<div v-if=\"internalException\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'An internal error occurred.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<p class=\"grouptop\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\n\t\t\t<p class=\"groupbottom\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tref=\"password\"\n\t\t\t\t\t:type=\"passwordInputType\"\n\t\t\t\t\tclass=\"password-with-toggle\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Password')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Password')\"\n\t\t\t\t\trequired>\n\t\t\t\t<label for=\"password\"\n\t\t\t\t\tclass=\"infield\">{{ t('core', 'Password') }}</label>\n\t\t\t\t<Button class=\"toggle-password\"\n\t\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t\t:aria-label=\"isPasswordHidden ? t('core', 'Show password') : t('core', 'Hide password')\"\n\t\t\t\t\t@click.stop.prevent=\"togglePassword\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Eye v-if=\"isPasswordHidden\" :size=\"20\" />\n\t\t\t\t\t\t<EyeOff v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\t\t\t</p>\n\n\t\t\t<LoginButton :loading=\"loading\" />\n\n\t\t\t<p v-if=\"invalidPassword\"\n\t\t\t\tclass=\"warning wrongPasswordMsg\">\n\t\t\t\t{{ t('core', 'Wrong username or password.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"userDisabled\"\n\t\t\t\tclass=\"warning userDisabledMsg\">\n\t\t\t\t{{ t('core', 'User disabled') }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"throttleDelay && throttleDelay > 5000\"\n\t\t\t\tclass=\"warning throttledMsg\">\n\t\t\t\t{{ t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.') }}\n\t\t\t</p>\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport Eye from 'vue-material-design-icons/Eye'\nimport EyeOff from 'vue-material-design-icons/EyeOff'\n\nimport LoginButton from './LoginButton'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tButton,\n\t\tEye,\n\t\tEyeOff,\n\t\tLoginButton,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tpasswordInputType: 'password',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t\tisPasswordHidden() {\n\t\t\treturn this.passwordInputType === 'password'\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.focus()\n\t\t} else {\n\t\t\tthis.$refs.password.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\ttogglePassword() {\n\t\t\tif (this.passwordInputType === 'password') {\n\t\t\t\tthis.passwordInputType = 'text'\n\t\t\t} else {\n\t\t\t\tthis.passwordInputType = 'password'\n\t\t\t}\n\t\t},\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.toggle-password {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 10px;\n\tcolor: var(--color-text-lighter);\n}\n</style>\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=8c61dc2a&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=8c61dc2a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8c61dc2a\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',[(_vm.apacheAuthFailed)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Server side authentication failed!'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.messages),function(message,index){return _c('div',{key:index,staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(message)),_c('br')])}),_vm._v(\" \"),(_vm.internalException)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'An internal error occurred.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('p',{staticClass:\"grouptop\",class:{shake: _vm.invalidPassword}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('p',{staticClass:\"groupbottom\",class:{shake: _vm.invalidPassword}},[_c('input',{ref:\"password\",staticClass:\"password-with-toggle\",attrs:{\"id\":\"password\",\"type\":_vm.passwordInputType,\"name\":\"password\",\"autocorrect\":\"off\",\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"placeholder\":_vm.t('core', 'Password'),\"aria-label\":_vm.t('core', 'Password'),\"required\":\"\"}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'Password')))]),_vm._v(\" \"),_c('Button',{staticClass:\"toggle-password\",attrs:{\"type\":\"tertiary-no-background\",\"aria-label\":_vm.isPasswordHidden ? _vm.t('core', 'Show password') : _vm.t('core', 'Hide password')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePassword.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isPasswordHidden)?_c('Eye',{attrs:{\"size\":20}}):_c('EyeOff',{attrs:{\"size\":20}})]},proxy:true}])})],1),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.invalidPassword)?_c('p',{staticClass:\"warning wrongPasswordMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Wrong username or password.'))+\"\\n\\t\\t\")]):(_vm.userDisabled)?_c('p',{staticClass:\"warning userDisabledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'User disabled'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.throttleDelay && _vm.throttleDelay > 5000)?_c('p',{staticClass:\"warning throttledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst location = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\twindow.location.href = location\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"adf4afc4\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"-->\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"notecard success\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"notecard error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"notecard error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=301e39ac&scoped=true&lang=css&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=301e39ac&scoped=true&lang=css&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=301e39ac&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=301e39ac&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"301e39ac\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"off\",\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"reset-password-wrapper\"}},[_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}})],1),_vm._v(\" \"),(_vm.message === 'send-success')?_c('p',{staticClass:\"notecard success\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('p',{staticClass:\"notecard error\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('p',{staticClass:\"notecard error\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n  -\n  - @author Julius Härtl <jus@bitgrid.net>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4dc21d74\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<div id=\"login\" class=\"guest-box\">\n\t\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<br>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a href=\"#\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div class=\"warning\">\n\t\t\t\t\t{{ t('core', 'Login form is disabled.') }}<br>\n\t\t\t\t\t<small>\n\t\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t\t</small>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<Button v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\"\n\t\t\t\t@click=\"goTo(alternativeLogin.href)\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</Button>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tButton,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t\tgoTo(href) {\n\t\t\twindow.location.href = href\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\t.fade-enter-active, .fade-leave-active {\n\t\ttransition: opacity .3s;\n\t}\n\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\t\topacity: 0;\n\t}\n\n\t#lost-password {\n\t\tpadding: 4px;\n\t\tmargin: 8px;\n\t\tborder-radius: var(--border-radius);\n\t}\n\n\t.alternative-logins button {\n\t\tmargin-top: 12px;\n\t\tmargin-bottom: 12px;\n\t\t&:first-child {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\t&:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","\n      import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=scss&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=scss&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=412afccc&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".toggle-password[data-v-8c61dc2a]{position:absolute;top:6px;right:10px;color:var(--color-text-lighter)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AAwPA,kCACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.toggle-password {\\n\\tposition: absolute;\\n\\ttop: 6px;\\n\\tright: 10px;\\n\\tcolor: var(--color-text-lighter);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}#lost-password{padding:4px;margin:8px;border-radius:var(--border-radius)}.alternative-logins button{margin-top:12px;margin-bottom:12px}.alternative-logins button:first-child{margin-top:0}.alternative-logins button:last-child{margin-bottom:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AAkMA,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,eACC,WAAA,CACA,UAAA,CACA,kCAAA,CAGD,2BACC,eAAA,CACA,kBAAA,CACA,uCACC,YAAA,CAGD,sCACC,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n#lost-password {\\n\\tpadding: 4px;\\n\\tmargin: 8px;\\n\\tborder-radius: var(--border-radius);\\n}\\n\\n.alternative-logins button {\\n\\tmargin-top: 12px;\\n\\tmargin-bottom: 12px;\\n\\t&:first-child {\\n\\t\\tmargin-top: 0;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.update[data-v-301e39ac] {\\n\\twidth: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\";AAqIA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n  -\\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n  -\\n  - @license GNU AGPL version 3 or any later version\\n  -\\n  - This program is free software: you can redistribute it and/or modify\\n  - it under the terms of the GNU Affero General Public License as\\n  - published by the Free Software Foundation, either version 3 of the\\n  - License, or (at your option) any later version.\\n  -\\n  - This program is distributed in the hope that it will be useful,\\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n  - GNU Affero General Public License for more details.\\n  -\\n  - You should have received a copy of the GNU Affero General Public License\\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\\n  -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<input id=\\\"user\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"user\\\"\\n\\t\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\t\\tname=\\\"user\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"off\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\t:aria-label=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t@change=\\\"updateUsername\\\">\\n\\t\\t\\t\\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\\n\\t\\t\\t\\tautocomplete=\\\"<?php p($_['login_form_autocomplete']); ?>\\\" autocapitalize=\\\"none\\\" autocorrect=\\\"off\\\"-->\\n\\t\\t\\t\\t<label for=\\\"user\\\" class=\\\"infield\\\">{{ t('core', 'Username or email') }}</label>\\n\\t\\t\\t</p>\\n\\t\\t\\t<div id=\\\"reset-password-wrapper\\\">\\n\\t\\t\\t\\t<LoginButton :value=\\\"t('core', 'Reset password')\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<p v-if=\\\"message === 'send-success'\\\"\\n\\t\\t\\t\\tclass=\\\"notecard success\\\">\\n\\t\\t\\t\\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\\n\\t\\t\\t\\t<br>\\n\\t\\t\\t\\t{{ t('core', 'If it is not there ask your local administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'send-error'\\\"\\n\\t\\t\\t\\tclass=\\\"notecard error\\\">\\n\\t\\t\\t\\t{{ t('core', 'Couldn\\\\'t send reset email. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'reset-error'\\\"\\n\\t\\t\\t\\tclass=\\\"notecard error\\\">\\n\\t\\t\\t\\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<a href=\\\"#\\\"\\n\\t\\t\\t\\t@click.prevent=\\\"$emit('abort')\\\">\\n\\t\\t\\t\\t{{ t('core', 'Back to login') }}\\n\\t\\t\\t</a>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\nimport { generateUrl } from '@nextcloud/router'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'ResetPassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordLink: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tupdateUsername() {\\n\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t},\\n\\t\\tsubmit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\t\\t\\tconst url = generateUrl('/lostpassword/email')\\n\\n\\t\\t\\tconst data = {\\n\\t\\t\\t\\tuser: this.user,\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn axios.post(url, data)\\n\\t\\t\\t\\t.then(resp => resp.data)\\n\\t\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t\\tif (data.status !== 'success') {\\n\\t\\t\\t\\t\\t\\tthrow new Error(`got status ${data.status}`)\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(e => {\\n\\t\\t\\t\\t\\tconsole.error('could not send reset email request', e)\\n\\n\\t\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\t\\tthis.message = 'send-error'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.then(() => { this.loading = false })\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.update {\\n\\t\\twidth: auto;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n  - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n  -\\n  - @author Julius Härtl <jus@bitgrid.net>\\n  -\\n  - @license GNU AGPL version 3 or any later version\\n  -\\n  - This program is free software: you can redistribute it and/or modify\\n  - it under the terms of the GNU Affero General Public License as\\n  - published by the Free Software Foundation, either version 3 of the\\n  - License, or (at your option) any later version.\\n  -\\n  - This program is distributed in the hope that it will be useful,\\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n  - GNU Affero General Public License for more details.\\n  -\\n  - You should have received a copy of the GNU Affero General Public License\\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n  -\\n  -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32 1x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=64 2x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=32 1x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=64 2x, \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n    + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n    + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n    + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n    + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\" title=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t\t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n    + \"\\\" alt=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t<a class=\\\"body\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n    + \"</div>\\n\t</a>\\n  \t<a class=\\\"top-action\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\" title=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n  \t\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n    + \"\\\" alt=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n    + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n    + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<a class=\\\"second-action\\\" href=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n    + \"\\\" title=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n\t<img src=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n    + \"\\\" alt=\\\"\"\n    + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n    + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n    + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n    + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n    + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n    + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n    + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"footer\\\"><a href=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n    + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"footer\\\"><a href=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n    + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n    + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n    + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n    + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4577;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4577: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(78795); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","_vm","_h","$createElement","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","valueLoading","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","ref","loginActionUrl","_e","_l","loadingIcon","staticStyle","class","shake","invalidPassword","directives","rawName","expression","autoCompleteAllowed","domProps","updateUsername","composing","user","passwordInputType","isPasswordHidden","togglePassword","throttleDelay","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","Array","isArray","proceed","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","messages","errors","countAlternativeLogins","alternativeLogin","goTo","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
index 5fa98ca32b0e2efe386fbf855c8fce3775612771..65da160df41dc3ed0f9c12c1ad1505396f5a07bc 100644 (file)
@@ -1,3 +1,3 @@
 /*! For license information please see core-recommendedapps.js.LICENSE.txt */
-!function(){"use strict";var n,t={12996:function(n,t,e){var a,o=e(22200),r=e(9944),i=e(20144),s=e(17499),c=null===(a=(0,o.getCurrentUser)())?(0,s.IY)().setApp("core").build():(0,s.IY)().setApp("core").setUid(a.uid).build(),l=e(4820),p=e(79753),d=e(16453),u=e(63560),f=e(93379),m=e.n(f),g=e(7795),A=e.n(g),h=e(90569),v=e.n(h),b=e(3565),C=e.n(b),x=e(19216),_=e.n(x),w=e(44589),y=e.n(w),k=e(54887),I={};I.styleTagTransform=y(),I.setAttributes=C(),I.insert=v().bind(null,"head"),I.domAPI=A(),I.insertStyleElement=_(),m()(k.Z,I),k.Z&&k.Z.locals&&k.Z.locals;var P=e(51900),B=(0,P.Z)({name:"InstallButton"},(function(){var n=this,t=n.$createElement;return(n._self._c||t)("button",n._g({staticClass:"primary",attrs:{autofocus:!0}},n.$listeners),[n._v("\n\t"+n._s(n.t("core","Install recommended apps"))+"\n")])}),[],!1,null,"3933c599",null).exports;function O(n,t,e,a,o,r,i){try{var s=n[r](i),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(a,o)}var E={calendar:{description:(0,r.translate)("core","Schedule work & meetings, synced with all your devices."),icon:(0,p.imagePath)("core","places/calendar.svg")},contacts:{description:(0,r.translate)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,p.imagePath)("core","places/contacts.svg")},mail:{description:(0,r.translate)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,p.imagePath)("core","actions/mail.svg")},spreed:{description:(0,r.translate)("core","Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,p.imagePath)("core","apps/spreed.svg")},richdocuments:{description:(0,r.translate)("core","Collaboratively edit office documents."),icon:(0,p.imagePath)("core","apps/richdocuments.svg")},richdocumentscode:{description:(0,r.translate)("core","Local document editing back-end used by the Collabora Online app."),icon:(0,p.imagePath)("core","apps/richdocumentscode.svg")}},Z=Object.keys(E),D=(0,d.loadState)("core","defaultPageUrl"),j={name:"RecommendedApps",components:{InstallButton:B},data:function(){return{showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:D}},computed:{recommendedApps:function(){return this.apps.filter((function(n){return Z.includes(n.id)}))}},mounted:function(){var n,t=this;return(n=regeneratorRuntime.mark((function n(){var e,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,l.default.get((0,p.generateUrl)("settings/apps/list"));case 3:e=n.sent,a=e.data,c.info("".concat(a.apps.length," apps fetched")),t.apps=a.apps.map((function(n){return Object.assign(n,{loading:!1,installationError:!1})})),c.debug("".concat(t.recommendedApps.length," recommended apps found"),{apps:t.recommendedApps}),t.showInstallButton=!0,n.next=15;break;case 11:n.prev=11,n.t0=n.catch(0),c.error("could not fetch app list",{error:n.t0}),t.loadingAppsError=!0;case 15:return n.prev=15,t.loadingApps=!1,n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[0,11,15,18]])})),function(){var t=this,e=arguments;return new Promise((function(a,o){var r=n.apply(t,e);function i(n){O(r,a,o,i,s,"next",n)}function s(n){O(r,a,o,i,s,"throw",n)}i(void 0)}))})()},methods:{installApps:function(){this.showInstallButton=!1,this.installingApps=!0;var n=(0,u.Z)(1),t=this.recommendedApps.filter((function(n){return!n.active&&n.isCompatible&&n.canInstall})).map((function(t){return n((function(){return c.info("installing ".concat(t.id)),t.loading=!0,l.default.post((0,p.generateUrl)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch((function(n){c.error("could not install ".concat(t.id),{error:n}),t.installationError=!0})).then((function(){c.info("installed ".concat(t.id)),t.loading=!1}))}))}));c.debug("installing ".concat(t.length," recommended apps")),Promise.all(t).then((function(){c.info("all recommended apps installed, redirecting …"),window.location=D})).catch((function(n){return c.error("could not install recommended apps",{error:n})}))},customIcon:function(n){return n in E&&E[n].icon?E[n].icon:(c.warn("no app icon for recommended app ".concat(n)),(0,p.imagePath)("core","places/default-app-icon.svg"))},customDescription:function(n){return n in E?E[n].description:(c.warn("no app description for recommended app ".concat(n)),"")}}},S=j,T=e(12135),U={};U.styleTagTransform=y(),U.setAttributes=C(),U.insert=v().bind(null,"head"),U.domAPI=A(),U.insertStyleElement=_(),m()(T.Z,U),T.Z&&T.Z.locals&&T.Z.locals;var R=(0,P.Z)(S,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"body-login-container"},[e("h2",[n._v(n._s(n.t("core","Recommended apps")))]),n._v(" "),n.loadingApps?e("p",{staticClass:"loading text-center"},[n._v("\n\t\t"+n._s(n.t("core","Loading apps …"))+"\n\t")]):n.loadingAppsError?e("p",{staticClass:"loading-error text-center"},[n._v("\n\t\t"+n._s(n.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):n.installingApps?e("p",{staticClass:"text-center"},[n._v("\n\t\t"+n._s(n.t("core","Installing apps …"))+"\n\t")]):n._e(),n._v(" "),n._l(n.recommendedApps,(function(t){return e("div",{key:t.id,staticClass:"app"},[e("img",{attrs:{src:n.customIcon(t.id),alt:""}}),n._v(" "),e("div",{staticClass:"info"},[e("h3",[n._v("\n\t\t\t\t"+n._s(t.name)+"\n\t\t\t\t"),t.loading?e("span",{staticClass:"icon icon-loading-small-dark"}):t.active?e("span",{staticClass:"icon icon-checkmark-white"}):n._e()]),n._v(" "),e("p",{domProps:{innerHTML:n._s(n.customDescription(t.id))}}),n._v(" "),t.installationError?e("p",[e("strong",[n._v(n._s(n.t("core","App download or installation failed")))])]):t.isCompatible?t.canInstall?n._e():e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app")))])]):e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app because it is not compatible")))])])])])})),n._v(" "),n.showInstallButton?e("InstallButton",{on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.installApps.apply(null,arguments)}}}):n._e(),n._v(" "),e("p",{staticClass:"text-center"},[e("a",{attrs:{href:n.defaultPageUrl}},[n._v(n._s(n.t("core","Cancel")))])])],2)}),[],!1,null,"cbe02e2a",null),Y=R.exports;e.nc=btoa((0,o.getRequestToken)()),i.default.mixin({methods:{t:r.translate}}),(new(i.default.extend(Y))).$mount("#recommended-apps"),c.debug("recommended apps view rendered")},54887:function(n,t,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([n.id,"button[data-v-3933c599]{margin:24px auto 10px auto;padding:10px 20px;font-size:20px}","",{version:3,sources:["webpack://./core/src/components/setup/InstallButton.vue"],names:[],mappings:"AAqCA,wBACC,0BAAA,CACA,iBAAA,CACA,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nbutton {\n\tmargin: 24px auto 10px auto;\n\tpadding: 10px 20px;\n\tfont-size: 20px;\n}\n"],sourceRoot:""}]),t.Z=i},12135:function(n,t,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([n.id,"p.loading[data-v-cbe02e2a],p.loading-error[data-v-cbe02e2a]{height:100px}p[data-v-cbe02e2a]:last-child{margin-top:10px}.text-center[data-v-cbe02e2a]{text-align:center}.app[data-v-cbe02e2a]{display:flex;flex-direction:row}.app img[data-v-cbe02e2a]{height:50px;width:50px;filter:invert(1)}.app img[data-v-cbe02e2a],.app .info[data-v-cbe02e2a]{padding:12px}.app .info h3[data-v-cbe02e2a],.app .info p[data-v-cbe02e2a]{text-align:left}.app .info h3[data-v-cbe02e2a]{color:#fff;margin-top:0}.app .info h3>span.icon[data-v-cbe02e2a]{display:inline-block}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AAoMC,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,gBAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,UAAA,CACA,YAAA,CAGD,yCACC,oBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.body-login-container {\n\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: invert(1);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tcolor: #fff;\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=i}},e={};function a(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={id:n,loaded:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=t,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(t,e,o,r){if(!e){var i=1/0;for(p=0;p<n.length;p++){e=n[p][0],o=n[p][1],r=n[p][2];for(var s=!0,c=0;c<e.length;c++)(!1&r||i>=r)&&Object.keys(a.O).every((function(n){return a.O[n](e[c])}))?e.splice(c--,1):(s=!1,r<i&&(i=r));if(s){n.splice(p--,1);var l=o();void 0!==l&&(t=l)}}return t}r=r||0;for(var p=n.length;p>0&&n[p-1][2]>r;p--)n[p]=n[p-1];n[p]=[e,o,r]},a.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(t,{a:t}),t},a.d=function(n,t){for(var e in t)a.o(t,e)&&!a.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),a.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},a.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},a.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},a.j=1033,function(){a.b=document.baseURI||self.location.href;var n={1033:0};a.O.j=function(t){return 0===n[t]};var t=function(t,e){var o,r,i=e[0],s=e[1],c=e[2],l=0;if(i.some((function(t){return 0!==n[t]}))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(c)var p=c(a)}for(t&&t(e);l<i.length;l++)r=i[l],a.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return a.O(p)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),a.nc=void 0;var o=a.O(void 0,[7874],(function(){return a(12996)}));o=a.O(o)}();
-//# sourceMappingURL=core-recommendedapps.js.map?v=363ab2097a633c210ea3
\ No newline at end of file
+!function(){"use strict";var n,t={2440:function(n,t,e){var o,a=e(22200),r=e(9944),i=e(20144),c=e(17499),s=null===(o=(0,a.getCurrentUser)())?(0,c.IY)().setApp("core").build():(0,c.IY)().setApp("core").setUid(o.uid).build(),l=e(4820),p=e(79753),d=e(16453),u=e(63560),f=e(1412),g=e.n(f);function m(n,t,e,o,a,r,i){try{var c=n[r](i),s=c.value}catch(n){return void e(n)}c.done?t(s):Promise.resolve(s).then(o,a)}var A={calendar:{description:(0,r.translate)("core","Schedule work & meetings, synced with all your devices."),icon:(0,p.imagePath)("core","places/calendar.svg")},contacts:{description:(0,r.translate)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,p.imagePath)("core","places/contacts.svg")},mail:{description:(0,r.translate)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,p.imagePath)("core","actions/mail.svg")},spreed:{description:(0,r.translate)("core","Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,p.imagePath)("core","apps/spreed.svg")},richdocuments:{description:(0,r.translate)("core","Collaboratively edit office documents."),icon:(0,p.imagePath)("core","apps/richdocuments.svg")},richdocumentscode:{description:(0,r.translate)("core","Local document editing back-end used by the Collabora Online app."),icon:(0,p.imagePath)("core","apps/richdocumentscode.svg")}},h=Object.keys(A),v=(0,d.loadState)("core","defaultPageUrl"),b={name:"RecommendedApps",components:{Button:g()},data:function(){return{showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:v}},computed:{recommendedApps:function(){return this.apps.filter((function(n){return h.includes(n.id)}))}},mounted:function(){var n,t=this;return(n=regeneratorRuntime.mark((function n(){var e,o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,l.default.get((0,p.generateUrl)("settings/apps/list"));case 3:e=n.sent,o=e.data,s.info("".concat(o.apps.length," apps fetched")),t.apps=o.apps.map((function(n){return Object.assign(n,{loading:!1,installationError:!1})})),s.debug("".concat(t.recommendedApps.length," recommended apps found"),{apps:t.recommendedApps}),t.showInstallButton=!0,n.next=15;break;case 11:n.prev=11,n.t0=n.catch(0),s.error("could not fetch app list",{error:n.t0}),t.loadingAppsError=!0;case 15:return n.prev=15,t.loadingApps=!1,n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[0,11,15,18]])})),function(){var t=this,e=arguments;return new Promise((function(o,a){var r=n.apply(t,e);function i(n){m(r,o,a,i,c,"next",n)}function c(n){m(r,o,a,i,c,"throw",n)}i(void 0)}))})()},methods:{installApps:function(){this.showInstallButton=!1,this.installingApps=!0;var n=(0,u.Z)(1),t=this.recommendedApps.filter((function(n){return!n.active&&n.isCompatible&&n.canInstall})).map((function(t){return n((function(){return s.info("installing ".concat(t.id)),t.loading=!0,l.default.post((0,p.generateUrl)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch((function(n){s.error("could not install ".concat(t.id),{error:n}),t.installationError=!0})).then((function(){s.info("installed ".concat(t.id)),t.loading=!1}))}))}));s.debug("installing ".concat(t.length," recommended apps")),Promise.all(t).then((function(){s.info("all recommended apps installed, redirecting …"),window.location=v})).catch((function(n){return s.error("could not install recommended apps",{error:n})}))},customIcon:function(n){return n in A&&A[n].icon?A[n].icon:(s.warn("no app icon for recommended app ".concat(n)),(0,p.imagePath)("core","places/default-app-icon.svg"))},customDescription:function(n){return n in A?A[n].description:(s.warn("no app description for recommended app ".concat(n)),"")},goTo:function(n){window.location.href=n}}},C=b,w=e(93379),x=e.n(w),y=e(7795),_=e.n(y),k=e(90569),P=e.n(k),I=e(3565),B=e.n(I),O=e(19216),j=e.n(O),D=e(44589),E=e.n(D),S=e(39160),T={};T.styleTagTransform=E(),T.setAttributes=B(),T.insert=P().bind(null,"head"),T.domAPI=_(),T.insertStyleElement=j(),x()(S.Z,T),S.Z&&S.Z.locals&&S.Z.locals;var U=(0,e(51900).Z)(C,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"guest-box"},[e("h2",[n._v(n._s(n.t("core","Recommended apps")))]),n._v(" "),n.loadingApps?e("p",{staticClass:"loading text-center"},[n._v("\n\t\t"+n._s(n.t("core","Loading apps …"))+"\n\t")]):n.loadingAppsError?e("p",{staticClass:"loading-error text-center"},[n._v("\n\t\t"+n._s(n.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):n.installingApps?e("p",{staticClass:"text-center"},[n._v("\n\t\t"+n._s(n.t("core","Installing apps …"))+"\n\t")]):n._e(),n._v(" "),n._l(n.recommendedApps,(function(t){return e("div",{key:t.id,staticClass:"app"},[e("img",{attrs:{src:n.customIcon(t.id),alt:""}}),n._v(" "),e("div",{staticClass:"info"},[e("h3",[n._v("\n\t\t\t\t"+n._s(t.name)+"\n\t\t\t\t"),t.loading?e("span",{staticClass:"icon icon-loading-small-dark"}):t.active?e("span",{staticClass:"icon icon-checkmark-white"}):n._e()]),n._v(" "),e("p",{domProps:{innerHTML:n._s(n.customDescription(t.id))}}),n._v(" "),t.installationError?e("p",[e("strong",[n._v(n._s(n.t("core","App download or installation failed")))])]):t.isCompatible?t.canInstall?n._e():e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app")))])]):e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app because it is not compatible")))])])])])})),n._v(" "),e("div",{staticClass:"dialog-row"},[n.showInstallButton?e("Button",{attrs:{type:"tertiary",role:"link",href:"defaultPageUrl"},on:{click:function(t){return n.goTo(n.defaultPageUrl)}}},[n._v("\n\t\t\t"+n._s(n.t("core","Cancel"))+"\n\t\t")]):n._e(),n._v(" "),n.showInstallButton?e("Button",{attrs:{type:"primary"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.installApps.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("core","Install recommended apps"))+"\n\t\t")]):n._e()],1)],2)}),[],!1,null,"7c973b36",null),R=U.exports;e.nc=btoa((0,a.getRequestToken)()),i.default.mixin({methods:{t:r.translate}}),(new(i.default.extend(R))).$mount("#recommended-apps"),s.debug("recommended apps view rendered")},39160:function(n,t,e){var o=e(87537),a=e.n(o),r=e(23645),i=e.n(r)()(a());i.push([n.id,".dialog-row[data-v-7c973b36]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-7c973b36],p.loading-error[data-v-7c973b36]{height:100px}p[data-v-7c973b36]:last-child{margin-top:10px}.text-center[data-v-7c973b36]{text-align:center}.app[data-v-7c973b36]{display:flex;flex-direction:row}.app img[data-v-7c973b36]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-7c973b36],.app .info[data-v-7c973b36]{padding:12px}.app .info h3[data-v-7c973b36],.app .info p[data-v-7c973b36]{text-align:left}.app .info h3[data-v-7c973b36]{margin-top:0}.app .info h3>span.icon[data-v-7c973b36]{display:inline-block}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AA0MA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,YAAA,CAGD,yCACC,oBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=i}},e={};function o(n){var a=e[n];if(void 0!==a)return a.exports;var r=e[n]={id:n,loaded:!1,exports:{}};return t[n].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=t,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,a,r){if(!e){var i=1/0;for(p=0;p<n.length;p++){e=n[p][0],a=n[p][1],r=n[p][2];for(var c=!0,s=0;s<e.length;s++)(!1&r||i>=r)&&Object.keys(o.O).every((function(n){return o.O[n](e[s])}))?e.splice(s--,1):(c=!1,r<i&&(i=r));if(c){n.splice(p--,1);var l=a();void 0!==l&&(t=l)}}return t}r=r||0;for(var p=n.length;p>0&&n[p-1][2]>r;p--)n[p]=n[p-1];n[p]=[e,a,r]},o.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(t,{a:t}),t},o.d=function(n,t){for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=1033,function(){o.b=document.baseURI||self.location.href;var n={1033:0};o.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,r,i=e[0],c=e[1],s=e[2],l=0;if(i.some((function(t){return 0!==n[t]}))){for(a in c)o.o(c,a)&&(o.m[a]=c[a]);if(s)var p=s(o)}for(t&&t(e);l<i.length;l++)r=i[l],o.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return o.O(p)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),o.nc=void 0;var a=o.O(void 0,[7874],(function(){return o(2440)}));a=o.O(a)}();
+//# sourceMappingURL=core-recommendedapps.js.map?v=be2ef99ec2c7abb75215
\ No newline at end of file
index 21b166315c776d2dffe4df0d9ed1853aab4d91d8..8adb834c7907c34f649809e6efaf977d80240de0 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"core-recommendedapps.js?v=363ab2097a633c210ea3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack://nextcloud/./core/src/components/setup/InstallButton.vue?0482","webpack://nextcloud/./core/src/components/setup/InstallButton.vue?daad","webpack:///nextcloud/core/src/components/setup/InstallButton.vue","webpack:///nextcloud/core/src/components/setup/InstallButton.vue?vue&type=template&id=3933c599&scoped=true&","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?f7d7","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=template&id=cbe02e2a&scoped=true&","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./InstallButton.vue?vue&type=template&id=3933c599&scoped=true&\"\nimport script from \"./InstallButton.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3933c599\",\n  null\n  \n)\n\nexport default component.exports","<!--\n  - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n  -\n  - @author Christopher Ng <chrng8@gmail.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n-->\n\n<template>\n\t<button class=\"primary\"\n\t\t:autofocus=\"true\"\n\t\tv-on=\"$listeners\">\n\t\t{{ t('core', 'Install recommended apps') }}\n\t</button>\n</template>\n\n<script>\nexport default {\n\tname: 'InstallButton',\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\tbutton {\n\t\tmargin: 24px auto 10px auto;\n\t\tpadding: 10px 20px;\n\t\tfont-size: 20px;\n\t}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',_vm._g({staticClass:\"primary\",attrs:{\"autofocus\":true}},_vm.$listeners),[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('core', 'Install recommended apps'))+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<div class=\"body-login-container\">\n\t\t<h2>{{ t('core', 'Recommended apps') }}</h2>\n\t\t<p v-if=\"loadingApps\" class=\"loading text-center\">\n\t\t\t{{ t('core', 'Loading apps …') }}\n\t\t</p>\n\t\t<p v-else-if=\"loadingAppsError\" class=\"loading-error text-center\">\n\t\t\t{{ t('core', 'Could not fetch list of apps from the App Store.') }}\n\t\t</p>\n\t\t<p v-else-if=\"installingApps\" class=\"text-center\">\n\t\t\t{{ t('core', 'Installing apps …') }}\n\t\t</p>\n\n\t\t<div v-for=\"app in recommendedApps\" :key=\"app.id\" class=\"app\">\n\t\t\t<img :src=\"customIcon(app.id)\" alt=\"\">\n\t\t\t<div class=\"info\">\n\t\t\t\t<h3>\n\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t<span v-if=\"app.loading\" class=\"icon icon-loading-small-dark\" />\n\t\t\t\t\t<span v-else-if=\"app.active\" class=\"icon icon-checkmark-white\" />\n\t\t\t\t</h3>\n\t\t\t\t<p v-html=\"customDescription(app.id)\" />\n\t\t\t\t<p v-if=\"app.installationError\">\n\t\t\t\t\t<strong>{{ t('core', 'App download or installation failed') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.isCompatible\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app because it is not compatible') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.canInstall\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app') }}</strong>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<InstallButton v-if=\"showInstallButton\"\n\t\t\t@click.stop.prevent=\"installApps\" />\n\n\t\t<p class=\"text-center\">\n\t\t\t<a :href=\"defaultPageUrl\">{{ t('core', 'Cancel') }}</a>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport pLimit from 'p-limit'\nimport { translate as t } from '@nextcloud/l10n'\n\n// TODO replace with Button component when @nextcloud/vue is upgraded to v5\nimport InstallButton from './InstallButton'\n\nimport logger from '../../logger'\n\nconst recommended = {\n\tcalendar: {\n\t\tdescription: t('core', 'Schedule work & meetings, synced with all your devices.'),\n\t\ticon: imagePath('core', 'places/calendar.svg'),\n\t},\n\tcontacts: {\n\t\tdescription: t('core', 'Keep your colleagues and friends in one place without leaking their private info.'),\n\t\ticon: imagePath('core', 'places/contacts.svg'),\n\t},\n\tmail: {\n\t\tdescription: t('core', 'Simple email app nicely integrated with Files, Contacts and Calendar.'),\n\t\ticon: imagePath('core', 'actions/mail.svg'),\n\t},\n\tspreed: {\n\t\tdescription: t('core', 'Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.'),\n\t\ticon: imagePath('core', 'apps/spreed.svg'),\n\t},\n\trichdocuments: {\n\t\tdescription: t('core', 'Collaboratively edit office documents.'),\n\t\ticon: imagePath('core', 'apps/richdocuments.svg'),\n\t},\n\trichdocumentscode: {\n\t\tdescription: t('core', 'Local document editing back-end used by the Collabora Online app.'),\n\t\ticon: imagePath('core', 'apps/richdocumentscode.svg'),\n\t},\n}\nconst recommendedIds = Object.keys(recommended)\nconst defaultPageUrl = loadState('core', 'defaultPageUrl')\n\nexport default {\n\tname: 'RecommendedApps',\n\tcomponents: {\n\t\tInstallButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowInstallButton: false,\n\t\t\tinstallingApps: false,\n\t\t\tloadingApps: true,\n\t\t\tloadingAppsError: false,\n\t\t\tapps: [],\n\t\t\tdefaultPageUrl,\n\t\t}\n\t},\n\tcomputed: {\n\t\trecommendedApps() {\n\t\t\treturn this.apps.filter(app => recommendedIds.includes(app.id))\n\t\t},\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('settings/apps/list'))\n\t\t\tlogger.info(`${data.apps.length} apps fetched`)\n\n\t\t\tthis.apps = data.apps.map(app => Object.assign(app, { loading: false, installationError: false }))\n\t\t\tlogger.debug(`${this.recommendedApps.length} recommended apps found`, { apps: this.recommendedApps })\n\n\t\t\tthis.showInstallButton = true\n\t\t} catch (error) {\n\t\t\tlogger.error('could not fetch app list', { error })\n\n\t\t\tthis.loadingAppsError = true\n\t\t} finally {\n\t\t\tthis.loadingApps = false\n\t\t}\n\t},\n\tmethods: {\n\t\tinstallApps() {\n\t\t\tthis.showInstallButton = false\n\t\t\tthis.installingApps = true\n\n\t\t\tconst limit = pLimit(1)\n\t\t\tconst installing = this.recommendedApps\n\t\t\t\t.filter(app => !app.active && app.isCompatible && app.canInstall)\n\t\t\t\t.map(app => limit(() => {\n\t\t\t\t\tlogger.info(`installing ${app.id}`)\n\t\t\t\t\tapp.loading = true\n\t\t\t\t\treturn axios.post(generateUrl('settings/apps/enable'), { appIds: [app.id], groups: [] })\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tlogger.error(`could not install ${app.id}`, { error })\n\t\t\t\t\t\t\tapp.installationError = true\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tlogger.info(`installed ${app.id}`)\n\t\t\t\t\t\t\tapp.loading = false\n\t\t\t\t\t\t})\n\t\t\t\t}))\n\t\t\tlogger.debug(`installing ${installing.length} recommended apps`)\n\t\t\tPromise.all(installing)\n\t\t\t\t.then(() => {\n\t\t\t\t\tlogger.info('all recommended apps installed, redirecting …')\n\n\t\t\t\t\twindow.location = defaultPageUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => logger.error('could not install recommended apps', { error }))\n\t\t},\n\t\tcustomIcon(appId) {\n\t\t\tif (!(appId in recommended) || !recommended[appId].icon) {\n\t\t\t\tlogger.warn(`no app icon for recommended app ${appId}`)\n\t\t\t\treturn imagePath('core', 'places/default-app-icon.svg')\n\t\t\t}\n\t\t\treturn recommended[appId].icon\n\t\t},\n\t\tcustomDescription(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\tlogger.warn(`no app description for recommended app ${appId}`)\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn recommended[appId].description\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.body-login-container {\n\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: invert(1);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tcolor: #fff;\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js&\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&lang=scss&scoped=true&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&lang=scss&scoped=true&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=cbe02e2a&scoped=true&\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"cbe02e2a\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"body-login-container\"},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):(_vm.installingApps)?_c('p',{staticClass:\"text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Installing apps …'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\"),(app.loading)?_c('span',{staticClass:\"icon icon-loading-small-dark\"}):(app.active)?_c('span',{staticClass:\"icon icon-checkmark-white\"}):_vm._e()]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()])])}),_vm._v(\" \"),(_vm.showInstallButton)?_c('InstallButton',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),_c('p',{staticClass:\"text-center\"},[_c('a',{attrs:{\"href\":_vm.defaultPageUrl}},[_vm._v(_vm._s(_vm.t('core', 'Cancel')))])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger'\nimport RecommendedApps from './components/setup/RecommendedApps'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button[data-v-3933c599]{margin:24px auto 10px auto;padding:10px 20px;font-size:20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/InstallButton.vue\"],\"names\":[],\"mappings\":\"AAqCA,wBACC,0BAAA,CACA,iBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nbutton {\\n\\tmargin: 24px auto 10px auto;\\n\\tpadding: 10px 20px;\\n\\tfont-size: 20px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"p.loading[data-v-cbe02e2a],p.loading-error[data-v-cbe02e2a]{height:100px}p[data-v-cbe02e2a]:last-child{margin-top:10px}.text-center[data-v-cbe02e2a]{text-align:center}.app[data-v-cbe02e2a]{display:flex;flex-direction:row}.app img[data-v-cbe02e2a]{height:50px;width:50px;filter:invert(1)}.app img[data-v-cbe02e2a],.app .info[data-v-cbe02e2a]{padding:12px}.app .info h3[data-v-cbe02e2a],.app .info p[data-v-cbe02e2a]{text-align:left}.app .info h3[data-v-cbe02e2a]{color:#fff;margin-top:0}.app .info h3>span.icon[data-v-cbe02e2a]{display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AAoMC,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,gBAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,UAAA,CACA,YAAA,CAGD,yCACC,oBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.body-login-container {\\n\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: invert(1);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tcolor: #fff;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\n\\t\\th3 > span.icon {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1033;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1033: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(12996); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_self","_c","_g","staticClass","attrs","$listeners","_v","_s","t","_e","_l","app","key","id","customIcon","name","domProps","customDescription","isCompatible","canInstall","on","$event","stopPropagation","preventDefault","installApps","apply","arguments","defaultPageUrl","__webpack_nonce__","btoa","getRequestToken","Vue","methods","RecommendedApps","$mount","logger","debug","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"core-recommendedapps.js?v=be2ef99ec2c7abb75215","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?579d","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=template&id=7c973b36&scoped=true&","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=7c973b36&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","<!--\n  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -->\n\n<template>\n\t<div class=\"guest-box\">\n\t\t<h2>{{ t('core', 'Recommended apps') }}</h2>\n\t\t<p v-if=\"loadingApps\" class=\"loading text-center\">\n\t\t\t{{ t('core', 'Loading apps …') }}\n\t\t</p>\n\t\t<p v-else-if=\"loadingAppsError\" class=\"loading-error text-center\">\n\t\t\t{{ t('core', 'Could not fetch list of apps from the App Store.') }}\n\t\t</p>\n\t\t<p v-else-if=\"installingApps\" class=\"text-center\">\n\t\t\t{{ t('core', 'Installing apps …') }}\n\t\t</p>\n\n\t\t<div v-for=\"app in recommendedApps\" :key=\"app.id\" class=\"app\">\n\t\t\t<img :src=\"customIcon(app.id)\" alt=\"\">\n\t\t\t<div class=\"info\">\n\t\t\t\t<h3>\n\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t<span v-if=\"app.loading\" class=\"icon icon-loading-small-dark\" />\n\t\t\t\t\t<span v-else-if=\"app.active\" class=\"icon icon-checkmark-white\" />\n\t\t\t\t</h3>\n\t\t\t\t<p v-html=\"customDescription(app.id)\" />\n\t\t\t\t<p v-if=\"app.installationError\">\n\t\t\t\t\t<strong>{{ t('core', 'App download or installation failed') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.isCompatible\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app because it is not compatible') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.canInstall\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app') }}</strong>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"dialog-row\">\n\t\t\t<Button v-if=\"showInstallButton\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\trole=\"link\"\n\t\t\t\thref=\"defaultPageUrl\"\n\t\t\t\t@click=\"goTo(defaultPageUrl)\">\n\t\t\t\t{{ t('core', 'Cancel') }}\n\t\t\t</Button>\n\n\t\t\t<Button v-if=\"showInstallButton\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t@click.stop.prevent=\"installApps\">\n\t\t\t\t{{ t('core', 'Install recommended apps') }}\n\t\t\t</Button>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport pLimit from 'p-limit'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nimport logger from '../../logger'\n\nconst recommended = {\n\tcalendar: {\n\t\tdescription: t('core', 'Schedule work & meetings, synced with all your devices.'),\n\t\ticon: imagePath('core', 'places/calendar.svg'),\n\t},\n\tcontacts: {\n\t\tdescription: t('core', 'Keep your colleagues and friends in one place without leaking their private info.'),\n\t\ticon: imagePath('core', 'places/contacts.svg'),\n\t},\n\tmail: {\n\t\tdescription: t('core', 'Simple email app nicely integrated with Files, Contacts and Calendar.'),\n\t\ticon: imagePath('core', 'actions/mail.svg'),\n\t},\n\tspreed: {\n\t\tdescription: t('core', 'Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.'),\n\t\ticon: imagePath('core', 'apps/spreed.svg'),\n\t},\n\trichdocuments: {\n\t\tdescription: t('core', 'Collaboratively edit office documents.'),\n\t\ticon: imagePath('core', 'apps/richdocuments.svg'),\n\t},\n\trichdocumentscode: {\n\t\tdescription: t('core', 'Local document editing back-end used by the Collabora Online app.'),\n\t\ticon: imagePath('core', 'apps/richdocumentscode.svg'),\n\t},\n}\nconst recommendedIds = Object.keys(recommended)\nconst defaultPageUrl = loadState('core', 'defaultPageUrl')\n\nexport default {\n\tname: 'RecommendedApps',\n\tcomponents: {\n\t\tButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowInstallButton: false,\n\t\t\tinstallingApps: false,\n\t\t\tloadingApps: true,\n\t\t\tloadingAppsError: false,\n\t\t\tapps: [],\n\t\t\tdefaultPageUrl,\n\t\t}\n\t},\n\tcomputed: {\n\t\trecommendedApps() {\n\t\t\treturn this.apps.filter(app => recommendedIds.includes(app.id))\n\t\t},\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('settings/apps/list'))\n\t\t\tlogger.info(`${data.apps.length} apps fetched`)\n\n\t\t\tthis.apps = data.apps.map(app => Object.assign(app, { loading: false, installationError: false }))\n\t\t\tlogger.debug(`${this.recommendedApps.length} recommended apps found`, { apps: this.recommendedApps })\n\n\t\t\tthis.showInstallButton = true\n\t\t} catch (error) {\n\t\t\tlogger.error('could not fetch app list', { error })\n\n\t\t\tthis.loadingAppsError = true\n\t\t} finally {\n\t\t\tthis.loadingApps = false\n\t\t}\n\t},\n\tmethods: {\n\t\tinstallApps() {\n\t\t\tthis.showInstallButton = false\n\t\t\tthis.installingApps = true\n\n\t\t\tconst limit = pLimit(1)\n\t\t\tconst installing = this.recommendedApps\n\t\t\t\t.filter(app => !app.active && app.isCompatible && app.canInstall)\n\t\t\t\t.map(app => limit(() => {\n\t\t\t\t\tlogger.info(`installing ${app.id}`)\n\t\t\t\t\tapp.loading = true\n\t\t\t\t\treturn axios.post(generateUrl('settings/apps/enable'), { appIds: [app.id], groups: [] })\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tlogger.error(`could not install ${app.id}`, { error })\n\t\t\t\t\t\t\tapp.installationError = true\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tlogger.info(`installed ${app.id}`)\n\t\t\t\t\t\t\tapp.loading = false\n\t\t\t\t\t\t})\n\t\t\t\t}))\n\t\t\tlogger.debug(`installing ${installing.length} recommended apps`)\n\t\t\tPromise.all(installing)\n\t\t\t\t.then(() => {\n\t\t\t\t\tlogger.info('all recommended apps installed, redirecting …')\n\n\t\t\t\t\twindow.location = defaultPageUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => logger.error('could not install recommended apps', { error }))\n\t\t},\n\t\tcustomIcon(appId) {\n\t\t\tif (!(appId in recommended) || !recommended[appId].icon) {\n\t\t\t\tlogger.warn(`no app icon for recommended app ${appId}`)\n\t\t\t\treturn imagePath('core', 'places/default-app-icon.svg')\n\t\t\t}\n\t\t\treturn recommended[appId].icon\n\t\t},\n\t\tcustomDescription(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\tlogger.warn(`no app description for recommended app ${appId}`)\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn recommended[appId].description\n\t\t},\n\t\tgoTo(href) {\n\t\t\twindow.location.href = href\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js&\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=7c973b36&lang=scss&scoped=true&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=7c973b36&lang=scss&scoped=true&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=7c973b36&scoped=true&\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=7c973b36&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7c973b36\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"guest-box\"},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):(_vm.installingApps)?_c('p',{staticClass:\"text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Installing apps …'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\"),(app.loading)?_c('span',{staticClass:\"icon icon-loading-small-dark\"}):(app.active)?_c('span',{staticClass:\"icon icon-checkmark-white\"}):_vm._e()]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()])])}),_vm._v(\" \"),_c('div',{staticClass:\"dialog-row\"},[(_vm.showInstallButton)?_c('Button',{attrs:{\"type\":\"tertiary\",\"role\":\"link\",\"href\":\"defaultPageUrl\"},on:{\"click\":function($event){return _vm.goTo(_vm.defaultPageUrl)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Cancel'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showInstallButton)?_c('Button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Install recommended apps'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger'\nimport RecommendedApps from './components/setup/RecommendedApps'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dialog-row[data-v-7c973b36]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-7c973b36],p.loading-error[data-v-7c973b36]{height:100px}p[data-v-7c973b36]:last-child{margin-top:10px}.text-center[data-v-7c973b36]{text-align:center}.app[data-v-7c973b36]{display:flex;flex-direction:row}.app img[data-v-7c973b36]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-7c973b36],.app .info[data-v-7c973b36]{padding:12px}.app .info h3[data-v-7c973b36],.app .info p[data-v-7c973b36]{text-align:left}.app .info h3[data-v-7c973b36]{margin-top:0}.app .info h3>span.icon[data-v-7c973b36]{display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AA0MA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,YAAA,CAGD,yCACC,oBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.dialog-row {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\tmargin-top: 8px;\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\n\\t\\th3 > span.icon {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1033;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1033: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(2440); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","t","_e","_l","app","key","id","attrs","customIcon","name","domProps","customDescription","isCompatible","canInstall","on","$event","goTo","defaultPageUrl","stopPropagation","preventDefault","installApps","apply","arguments","__webpack_nonce__","btoa","getRequestToken","Vue","methods","RecommendedApps","$mount","logger","debug","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
index 7502b143718c3bf95e37b8d1e890d85c3c1d752c..3fb06abb23552fb512e647cd943cb42372117ff6 100644 (file)
@@ -38,34 +38,22 @@ class LoginPageContext implements Context, ActorAwareInterface {
         */
        private $filesAppContext;
 
-       /**
-        * @return Locator
-        */
-       public static function userNameField() {
+       public static function userNameField(): Locator {
                return Locator::forThe()->field("user")->
                                describedAs("User name field in Login page");
        }
 
-       /**
-        * @return Locator
-        */
-       public static function passwordField() {
+       public static function passwordField(): Locator {
                return Locator::forThe()->field("password")->
                                describedAs("Password field in Login page");
        }
 
-       /**
-        * @return Locator
-        */
-       public static function loginButton() {
-               return Locator::forThe()->css(".submit-wrapper .submit-wrapper__input")->
+       public static function loginButton(): Locator {
+               return Locator::forThe()->css(".button-vue[type='submit']")->
                                describedAs("Login button in Login page");
        }
 
-       /**
-        * @return Locator
-        */
-       public static function wrongPasswordMessage() {
+       public static function wrongPasswordMessage(): Locator {
                return Locator::forThe()->xpath("//*[@class = 'warning wrongPasswordMsg' and normalize-space() = 'Wrong username or password.']")->
                                describedAs("Wrong password message in Login page");
        }
@@ -81,7 +69,7 @@ class LoginPageContext implements Context, ActorAwareInterface {
        /**
         * @When I log in with user :user and password :password
         */
-       public function iLogInWithUserAndPassword($user, $password) {
+       public function iLogInWithUserAndPassword(string $user, string $password): void {
                $this->actor->find(self::userNameField(), 10)->setValue($user);
                $this->actor->find(self::passwordField())->setValue($password);
                $this->actor->find(self::loginButton())->click();