<commit_before><!--
  - @copyright 2019 <NAME> <<EMAIL>>
  -
  - @author 2019 <NAME> <<EMAIL>>
  -
  - @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>
	<form ref="loginForm"
		method="post"
		name="login"
		:action="OC.generateUrl('login')"
		@submit="submit">
		<fieldset>
			<div v-if="apacheAuthFailed"
				class="warning">
				{{ t('core', 'Server side authentication failed!') }}<br>
				<small>{{ t('core', 'Please contact your administrator.') }}
				</small>
			</div>
			<div v-for="(message, index) in messages"
				:key="index"
				class="warning">
				{{ message }}<br>
			</div>
			<div v-if="internalException"
				class="warning">
				{{ t('core', 'An internal error occurred.') }}<br>
				<small>{{ t('core', 'Please try again or contact your administrator.') }}
				</small>
			</div>
			<div id="message"
				class="hidden">
				<img class="float-spinner"
					alt=""
					:src="OC.imagePath('core', 'loading-dark.gif')">
				<span id="messageText" />
				<!-- the following div ensures that the spinner is always inside the #message div -->
				<div style="clear: both;" />
			</div>
			<p class="grouptop"
				:class="{shake: invalidPassword}">
				<input id="user"
					ref="user"
					v-model="user"
					type="text"
					name="user"
					autocapitalize="off"
					:autocomplete="autoCompleteAllowed ? 'on' : 'off'"
					:placeholder="t('core', 'Username or email')"
					:aria-label="t('core', 'Username or email')"
					required
					@change="updateUsername">
				<label for="user" class="infield">{{ t('core', 'Username or	email') }}</label>
			</p>

			<p class="groupbottom"
				:class="{shake: invalidPassword}">
				<input id="password"
					ref="password"
					:type="passwordInputType"
					class="password-with-toggle"
					name="password"
					:autocomplete="autoCompleteAllowed ? 'on' : 'off'"
					:placeholder="t('core', 'Password')"
					:aria-label="t('core', 'Password')"
					required>
				<label for="password"
					class="infield">{{ t('Password') }}</label>
				<a href="#" class="toggle-password" @click.stop.prevent="togglePassword">
					<img :src="OC.imagePath('core', 'actions/toggle.svg')">
				</a>
			</p>
<commit_msg>Use space instead of tab inside translation<commit_after><!--
  - @copyright 2019 <NAME> <<EMAIL>>
  -
  - @author 2019 <NAME> <<EMAIL>>
  -
  - @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>
	<form ref="loginForm"
		method="post"
		name="login"
		:action="OC.generateUrl('login')"
		@submit="submit">
		<fieldset>
			<div v-if="apacheAuthFailed"
				class="warning">
				{{ t('core', 'Server side authentication failed!') }}<br>
				<small>{{ t('core', 'Please contact your administrator.') }}
				</small>
			</div>
			<div v-for="(message, index) in messages"
				:key="index"
				class="warning">
				{{ message }}<br>
			</div>
			<div v-if="internalException"
				class="warning">
				{{ t('core', 'An internal error occurred.') }}<br>
				<small>{{ t('core', 'Please try again or contact your administrator.') }}
				</small>
			</div>
			<div id="message"
				class="hidden">
				<img class="float-spinner"
					alt=""
					:src="OC.imagePath('core', 'loading-dark.gif')">
				<span id="messageText" />
				<!-- the following div ensures that the spinner is always inside the #message div -->
				<div style="clear: both;" />
			</div>
			<p class="grouptop"
				:class="{shake: invalidPassword}">
				<input id="user"
					ref="user"
					v-model="user"
					type="text"
					name="user"
					autocapitalize="off"
					:autocomplete="autoCompleteAllowed ? 'on' : 'off'"
					:placeholder="t('core', 'Username or email')"
					:aria-label="t('core', 'Username or email')"
					required
					@change="updateUsername">
				<label for="user" class="infield">{{ t('core', 'Username or email') }}</label>
			</p>

			<p class="groupbottom"
				:class="{shake: invalidPassword}">
				<input id="password"
					ref="password"
					:type="passwordInputType"
					class="password-with-toggle"
					name="password"
					:autocomplete="autoCompleteAllowed ? 'on' : 'off'"
					:placeholder="t('core', 'Password')"
					:aria-label="t('core', 'Password')"
					required>
				<label for="password"
					class="infield">{{ t('Password') }}</label>
				<a href="#" class="toggle-password" @click.stop.prevent="togglePassword">
					<img :src="OC.imagePath('core', 'actions/toggle.svg')">
				</a>
			</p>

{'fraction_non_alphanumeric': 0.16562716562716562, 'fraction_numerical': 0.003465003465003465, 'mean_word_length': 3.3049962714392245, 'pattern_counts': {'":': 0, '<': 89, '<?xml version=': 0, '>': 89, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6020615', 'n_tokens_mistral': 2206, 'n_tokens_neox': 1791, 'n_words': 540}