Subversion Repositories ALCASAR

Rev

Rev 2809 | Rev 2819 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 2809 Rev 2815
1
<?php
1
<?php
2
# $Id: password.php 2809 2020-04-12 17:35:46Z rexy $
2
# $Id: password.php 2815 2020-05-03 22:10:04Z rexy $
3
#
3
#
4
# change user password on ALACASAR NAC
4
# change user password on ALCASAR NAC
5
# Copyright (C) 2003, 2004 Mondru AB.
-
 
6
# Copyright (C) 2008-20017 ANGEL95 & REXY
5
# by ANGEL95 & Rexy
7
 
6
 
8
/****************************************************************
7
/****************************************************************
9
*			GLOBAL FILE PATHS			*
8
*			GLOBAL FILE PATHS			*
10
*****************************************************************/
9
*****************************************************************/
11
define('CONF_FILE', '/usr/local/etc/alcasar.conf');
10
define('CONF_FILE', '/usr/local/etc/alcasar.conf');
12
 
11
 
13
/****************************************************************
12
/****************************************************************
14
*			FILE reading test			*
13
*			FILE reading test			*
15
*****************************************************************/
14
*****************************************************************/
16
$conf_files = array(CONF_FILE);
15
$conf_files = array(CONF_FILE);
17
foreach ($conf_files as $file) {
16
foreach ($conf_files as $file) {
18
	if (!file_exists($file)) {
17
	if (!file_exists($file)) {
19
		exit("Fichier $file non présent");
18
		exit("Fichier $file non présent");
20
	}
19
	}
21
	if (!is_readable($file)) {
20
	if (!is_readable($file)) {
22
		exit("Vous n'avez pas les droits de lecture sur le fichier $file");
21
		exit("Vous n'avez pas les droits de lecture sur le fichier $file");
23
	}
22
	}
24
}
23
}
25
 
24
 
26
/****************************************************************
25
/****************************************************************
27
*			Read CONF_FILE				*
26
*			Read CONF_FILE				*
28
*****************************************************************/
27
*****************************************************************/
29
$file_conf = fopen(CONF_FILE, 'r');
28
$file_conf = fopen(CONF_FILE, 'r');
30
if (!$file_conf) {
29
if (!$file_conf) {
31
	exit('Error opening the file '.CONF_FILE);
30
	exit('Error opening the file '.CONF_FILE);
32
}
31
}
33
while (!feof($file_conf)) {
32
while (!feof($file_conf)) {
34
	$buffer = fgets($file_conf, 4096);
33
	$buffer = fgets($file_conf, 4096);
35
	if ((strpos($buffer, '=') !== false) && (substr($buffer, 0, 1) !== '#')) {
34
	if ((strpos($buffer, '=') !== false) && (substr($buffer, 0, 1) !== '#')) {
36
		$tmp = explode('=', $buffer, 2);
35
		$tmp = explode('=', $buffer, 2);
37
		$conf[trim($tmp[0])] = trim($tmp[1]);
36
		$conf[trim($tmp[0])] = trim($tmp[1]);
38
	}
37
	}
39
}
38
}
40
fclose($file_conf);
39
fclose($file_conf);
41
 
40
 
42
// Redirect to HTTPS
41
// Redirect to HTTPS
43
if ((!isset($_SERVER['HTTPS'])) || (empty($_SERVER['HTTPS'])) || ($_SERVER['HTTPS'] === 'off')) {
42
if ((!isset($_SERVER['HTTPS'])) || (empty($_SERVER['HTTPS'])) || ($_SERVER['HTTPS'] === 'off')) {
44
	header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
43
	header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
45
	exit();
44
	exit();
46
}
45
}
47
 
46
 
48
require('/etc/freeradius-web/config.php');
47
require('/etc/freeradius-web/config.php');
49
 
48
 
50
$current_page = htmlspecialchars($_SERVER['PHP_SELF']);
49
$current_page = htmlspecialchars($_SERVER['PHP_SELF']);
51
$homepage = (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')) ? 'https' : 'http').'://'.$conf['HOSTNAME'].'.'.$conf['DOMAIN'];
50
$homepage = (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')) ? 'https' : 'http').'://'.$conf['HOSTNAME'].'.'.$conf['DOMAIN'];
52
 
51
 
53
// Choice of language
52
// Choice of language
54
$Language = 'en';
53
$Language = 'en';
55
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
54
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
56
	$Langue = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
55
	$Langue = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
57
	$Language = strtolower(substr(chop($Langue[0]), 0, 2));
56
	$Language = strtolower(substr(chop($Langue[0]), 0, 2));
58
}
57
}
59
if ($Language === 'es') {		// Spanish
58
if ($Language === 'es') {		// Spanish
60
	$l_title			= "User password change";
59
	$l_title			= "User password change";
61
	$l_form_l1			= "User";
60
	$l_form_l1			= "User";
62
	$l_form_l2			= "Old password";
61
	$l_form_l2			= "Old password";
63
	$l_form_l3			= "New password";
62
	$l_form_l3			= "New password";
64
	$l_form_l4			= "New password (confirmation)";
63
	$l_form_l4			= "New password (confirmation)";
65
	$l_eval_pass			= "Score :";
64
	$l_eval_pass			= "Score :";
66
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
65
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
67
	$l_form_button_valid		= "Modify";
66
	$l_form_button_valid		= "Modify";
68
	$l_form_button_retour		= "Cancel";
67
	$l_form_button_retour		= "Cancel";
69
	$l_form_result1			= "Your password has been successfuly changed";
68
	$l_form_result1			= "Your password has been successfuly changed";
70
	$l_form_result2			= "Error when trying to change password";
69
	$l_form_result2			= "Error when trying to change password";
71
} else if ($Language === 'pt') {	// Portuguese
70
} else if ($Language === 'pt') {	// Portuguese
72
	$l_title			= "Alteração de senha do usuário";
71
	$l_title			= "Alteração de senha do usuário";
73
	$l_form_l1			= "Usuário";
72
	$l_form_l1			= "Usuário";
74
	$l_form_l2			= "Senha antiga";
73
	$l_form_l2			= "Senha antiga";
75
	$l_form_l3			= "Nova senha";
74
	$l_form_l3			= "Nova senha";
76
	$l_form_l4			= "Nova senha (confirmação)";
75
	$l_form_l4			= "Nova senha (confirmação)";
77
	$l_eval_pass			= "Resultado:";
76
	$l_eval_pass			= "Resultado:";
78
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
77
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
79
	$l_form_button_valid		= "Modificar";
78
	$l_form_button_valid		= "Modificar";
80
	$l_form_button_retour		= "Cancelar";
79
	$l_form_button_retour		= "Cancelar";
81
	$l_form_result1			= "Sua senha foi alterada com sucesso";
80
	$l_form_result1			= "Sua senha foi alterada com sucesso";
82
	$l_form_result2			= "Erro ao tentar alterar a senha";
81
	$l_form_result2			= "Erro ao tentar alterar a senha";
83
} else if ($Language === 'de') {	// German
82
} else if ($Language === 'de') {	// German
84
	$l_title			= "Password ändern";
83
	$l_title			= "Password ändern";
85
	$l_form_l1			= "Benutzername";
84
	$l_form_l1			= "Benutzername";
86
	$l_form_l2			= "Altes Passwort";
85
	$l_form_l2			= "Altes Passwort";
87
	$l_form_l3			= "Neues Passwort";
86
	$l_form_l3			= "Neues Passwort";
88
	$l_form_l4			= "Neues Passwort bestätigen";
87
	$l_form_l4			= "Neues Passwort bestätigen";
89
	$l_eval_pass			= "Wert :";
88
	$l_eval_pass			= "Wert :";
90
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
89
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
91
	$l_form_button_valid		= "Bestätigen";
90
	$l_form_button_valid		= "Bestätigen";
92
	$l_form_button_retour		= "Abbrechen";
91
	$l_form_button_retour		= "Abbrechen";
93
	$l_form_result1			= "Ihr Passwort wurde erfolgreich geändert.";
92
	$l_form_result1			= "Ihr Passwort wurde erfolgreich geändert.";
94
	$l_form_result2			= "Fehler beim Ändern des Passworts";
93
	$l_form_result2			= "Fehler beim Ändern des Passworts";
95
} else if ($Language === 'nl') {	// Dutch
94
} else if ($Language === 'nl') {	// Dutch
96
	$l_title			= "User password change";
95
	$l_title			= "User password change";
97
	$l_form_l1			= "User";
96
	$l_form_l1			= "User";
98
	$l_form_l2			= "Old password";
97
	$l_form_l2			= "Old password";
99
	$l_form_l3			= "New password";
98
	$l_form_l3			= "New password";
100
	$l_form_l4			= "New password (confirmation)";
99
	$l_form_l4			= "New password (confirmation)";
101
	$l_eval_pass			= "Score :";
100
	$l_eval_pass			= "Score :";
102
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
101
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
103
	$l_form_button_valid		= "Modify";
102
	$l_form_button_valid		= "Modify";
104
	$l_form_button_retour		= "Cancel";
103
	$l_form_button_retour		= "Cancel";
105
	$l_form_result1			= "Your password has been successfuly changed";
104
	$l_form_result1			= "Your password has been successfuly changed";
106
	$l_form_result2			= "Error when trying to change password";
105
	$l_form_result2			= "Error when trying to change password";
107
} else if ($Language === 'zh') {	// Chinese
106
} else if ($Language === 'zh') {	// Chinese
108
	$l_title			= "修改用户密码";
107
	$l_title			= "修改用户密码";
109
	$l_form_l1			= "用户";
108
	$l_form_l1			= "用户";
110
	$l_form_l2			= "旧密码";
109
	$l_form_l2			= "旧密码";
111
	$l_form_l3			= "新密码";
110
	$l_form_l3			= "新密码";
112
	$l_form_l4			= "新密码(确认)";
111
	$l_form_l4			= "新密码(确认)";
113
	$l_eval_pass			= ""; // TODO: to translate
112
	$l_eval_pass			= ""; // TODO: to translate
114
	$l_passwordmeter		= "技术支持 'Shibbo Password Analyser'";
113
	$l_passwordmeter		= "技术支持 'Shibbo Password Analyser'";
115
	$l_form_button_valid		= "修改";
114
	$l_form_button_valid		= "修改";
116
	$l_form_button_retour		= "取消";
115
	$l_form_button_retour		= "取消";
117
	$l_form_result1			= "您的密码已成功修改";
116
	$l_form_result1			= "您的密码已成功修改";
118
	$l_form_result2			= "修改密码出错";
117
	$l_form_result2			= "修改密码出错";
119
} else if ($Language === 'ar') {	// Arabic
118
} else if ($Language === 'ar') {	// Arabic
120
	$l_title			= "تغيير كلمة المرور للمستخدم";
119
	$l_title			= "تغيير كلمة المرور للمستخدم";
121
	$l_form_l1			= "المستعمل";
120
	$l_form_l1			= "المستعمل";
122
	$l_form_l2			= "كلمه السر القديمة";
121
	$l_form_l2			= "كلمه السر القديمة";
123
	$l_form_l3			= "كلمة السر الجديدة";
122
	$l_form_l3			= "كلمة السر الجديدة";
124
	$l_form_l4			= "كلمة السر الجديدة (أكد)";
123
	$l_form_l4			= "كلمة السر الجديدة (أكد)";
125
	$l_eval_pass			= ""; // TODO: to translate
124
	$l_eval_pass			= ""; // TODO: to translate
126
	$l_passwordmeter		= "مشغل بواسطة 'Shibbo Password Analyser'";
125
	$l_passwordmeter		= "مشغل بواسطة 'Shibbo Password Analyser'";
127
	$l_form_button_valid		= "تغيير";
126
	$l_form_button_valid		= "تغيير";
128
	$l_form_button_retour		= "إلغاء";
127
	$l_form_button_retour		= "إلغاء";
129
	$l_form_result1			= "تم تغيير الرقم السري بنجاح";
128
	$l_form_result1			= "تم تغيير الرقم السري بنجاح";
130
	$l_form_result2			= "خطأ عند محاولة تغيير كلمة المرور";
129
	$l_form_result2			= "خطأ عند محاولة تغيير كلمة المرور";
131
} else if ($Language === 'fr') {	// French
130
} else if ($Language === 'fr') {	// French
132
	$l_title			= "Changement de mot de passe utilisateur";
131
	$l_title			= "Changement de mot de passe utilisateur";
133
	$l_form_l1			= "Utilisateur :";
132
	$l_form_l1			= "Utilisateur :";
134
	$l_form_l2			= "Ancien mot de passe :";
133
	$l_form_l2			= "Ancien mot de passe :";
135
	$l_form_l3			= "Nouveau mot de passe :";
134
	$l_form_l3			= "Nouveau mot de passe :";
136
	$l_form_l4			= "Nouveau mot de passe (confirmation) :";
135
	$l_form_l4			= "Nouveau mot de passe (confirmation) :";
137
	$l_eval_pass			= "Score :";
136
	$l_eval_pass			= "Score :";
138
	$l_passwordmeter		= "Propulsé par 'Shibbo Password Analyser'";
137
	$l_passwordmeter		= "Propulsé par 'Shibbo Password Analyser'";
139
	$l_form_button_valid		= "Modifier";
138
	$l_form_button_valid		= "Modifier";
140
	$l_form_button_retour		= "Annuler";
139
	$l_form_button_retour		= "Annuler";
141
	$l_form_result1			= "Votre mot de passe a été modifié avec succès";
140
	$l_form_result1			= "Votre mot de passe a été modifié avec succès";
142
	$l_form_result2			= "Erreur de changement de mot de passe";
141
	$l_form_result2			= "Erreur de changement de mot de passe";
143
} else {				// English
142
} else {				// English
144
	$l_title			= "User password change";
143
	$l_title			= "User password change";
145
	$l_form_l1			= "User";
144
	$l_form_l1			= "User";
146
	$l_form_l2			= "Old password";
145
	$l_form_l2			= "Old password";
147
	$l_form_l3			= "New password";
146
	$l_form_l3			= "New password";
148
	$l_form_l4			= "New password (confirmation)";
147
	$l_form_l4			= "New password (confirmation)";
149
	$l_eval_pass			= "Score:";
148
	$l_eval_pass			= "Score:";
150
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
149
	$l_passwordmeter		= "Powered by 'Shibbo Password Analyser'";
151
	$l_form_button_valid		= "Modify";
150
	$l_form_button_valid		= "Modify";
152
	$l_form_button_retour		= "Cancel";
151
	$l_form_button_retour		= "Cancel";
153
	$l_form_result1			= "Your password has been successfuly changed";
152
	$l_form_result1			= "Your password has been successfuly changed";
154
	$l_form_result2			= "Error when trying to change password";
153
	$l_form_result2			= "Error when trying to change password";
155
}
154
}
156
 
155
 
157
if (isset($action)) {
156
if (isset($action)) {
158
	if ($action === 'checkpass') {
157
	if ($action === 'checkpass') {
159
		if (!is_file("acc/manager/lib/sql/drivers/$config[sql_type]/functions.php")) {
158
		if (!is_file("acc/manager/lib/sql/drivers/$config[sql_type]/functions.php")) {
160
			exit('<b>Could not include SQL library</b>');
159
			exit('<b>Could not include SQL library</b>');
161
		}
160
		}
162
		require_once("acc/manager/lib/sql/drivers/$config[sql_type]/functions.php");
161
		require_once("acc/manager/lib/sql/drivers/$config[sql_type]/functions.php");
163
		$link = @da_sql_pconnect($config);
162
		$link = @da_sql_pconnect($config);
164
		if ($link) {
163
		if ($link) {
165
			$sql = "SELECT attribute,value FROM $config[sql_check_table] WHERE username = '$login' AND attribute = '$config[sql_password_attribute]';";
164
			$sql = "SELECT attribute,value FROM $config[sql_check_table] WHERE username = '$login' AND attribute = '$config[sql_password_attribute]';";
166
			$res = @da_sql_query($link,$config, $sql);
165
			$res = @da_sql_query($link,$config, $sql);
167
			if ($res) {
166
			if ($res) {
168
				$row = @da_sql_fetch_array($res, $config);
167
				$row = @da_sql_fetch_array($res, $config);
169
				if (!is_file("acc/manager/lib/crypt/$config[general_encryption_method].php")) {
168
				if (!is_file("acc/manager/lib/crypt/$config[general_encryption_method].php")) {
170
					exit('<b>Could not open encryption library file</b>');
169
					exit('<b>Could not open encryption library file</b>');
171
				}
170
				}
172
				include("acc/manager/lib/crypt/$config[general_encryption_method].php");
171
				include("acc/manager/lib/crypt/$config[general_encryption_method].php");
173
				$enc_passwd = $row['value'];
172
				$enc_passwd = $row['value'];
174
				$passwd     = da_encrypt($passwd,$enc_passwd);
173
				$passwd     = da_encrypt($passwd,$enc_passwd);
175
				$newpasswd  = da_encrypt($newpasswd,$enc_passwd);
174
				$newpasswd  = da_encrypt($newpasswd,$enc_passwd);
176
				$newpasswd2 = da_encrypt($newpasswd2,$enc_passwd);
175
				$newpasswd2 = da_encrypt($newpasswd2,$enc_passwd);
177
				if (($passwd === $enc_passwd) && ($newpasswd === $newpasswd2)) {
176
				if (($passwd === $enc_passwd) && ($newpasswd === $newpasswd2)) {
178
					$sql = "UPDATE $config[sql_check_table] SET value='$newpasswd' WHERE username = '$login' AND attribute = '$config[sql_password_attribute]';";
177
					$sql = "UPDATE $config[sql_check_table] SET value='$newpasswd' WHERE username = '$login' AND attribute = '$config[sql_password_attribute]';";
179
					$res2 = @da_sql_query($link, $config, $sql);
178
					$res2 = @da_sql_query($link, $config, $sql);
180
					$changePasswordMessage = '<font color=blue><b>'.$l_form_result1.'</b></font>';
179
					$changePasswordMessage = '<font color=blue><b>'.$l_form_result1.'</b></font>';
181
				} else {
180
				} else {
182
					$changePasswordMessage = '<font color=red><b>'.$l_form_result2.'</b></font>';
181
					$changePasswordMessage = '<font color=red><b>'.$l_form_result2.'</b></font>';
183
				}
182
				}
184
			}
183
			}
185
		}
184
		}
186
	}
185
	}
187
}
186
}
188
 
187
 
189
// Cleaning the cache
188
// Cleaning the cache
190
header('Expires: Tue, 01 Jan 2000 00:00:00 GMT');
189
header('Expires: Tue, 01 Jan 2000 00:00:00 GMT');
191
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
190
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
192
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
191
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
193
header('Cache-Control: post-check=0, pre-check=0', false);
192
header('Cache-Control: post-check=0, pre-check=0', false);
194
header('Pragma: no-cache');
193
header('Pragma: no-cache');
195
?>
194
?>
196
<!DOCTYPE html>
195
<!DOCTYPE html>
197
<html>
196
<html>
198
	<head>
197
	<head>
199
		<meta charset="UTF-8">
198
		<meta charset="UTF-8">
200
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
199
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
201
		<title>ALCASAR - <?= $l_title ?></title>
200
		<title>ALCASAR - <?= $l_title ?></title>
202
		<link rel="stylesheet" href="/css/pwdmeter.css" type="text/css">
201
		<link rel="stylesheet" href="/css/pwdmeter.css" type="text/css">
203
		<link rel="stylesheet" href="/css/bootstrap.min.css" type="text/css">
202
		<link rel="stylesheet" href="/css/bootstrap.min.css" type="text/css">
204
		<link rel="stylesheet" href="/css/pass.css" type="text/css">
203
		<link rel="stylesheet" href="/css/pass.css" type="text/css">
205
		<!--[if lt IE 7]>
204
		<!--[if lt IE 7]>
206
			<link rel="stylesheet" href="css/ie.css" type="text/css">
205
			<link rel="stylesheet" href="css/ie.css" type="text/css">
207
		<![endif]-->
206
		<![endif]-->
208
		<script src="/js/pwdmeter.js"></script>
207
		<script src="/js/pwdmeter.js"></script>
209
	</head>
208
	</head>
210
	<body>
209
	<body>
211
		<div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2" id="gui">
210
		<div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2" id="gui">
212
 
211
 
213
			<!-- HeaderBox -->
212
			<!-- HeaderBox -->
214
 
213
 
215
			<div class="row banner">
214
			<div class="row banner">
216
				<!-- Logo box -->
215
				<!-- Logo box -->
217
				<div id="boite_logo" class="img_banner hidden-xs col-sm-3 col-md-2 col-lg-2">
216
				<div id="boite_logo" class="img_banner hidden-xs col-sm-3 col-md-2 col-lg-2">
218
					<img class="img-responsive" src="images/organisme.png">
217
					<img class="img-responsive" src="images/organisme.png">
219
				</div>
218
				</div>
220
 
219
 
221
				<!-- Title -->
220
				<!-- Title -->
222
				<div id="cadre_titre" class="titre_banner col-xs-10 col-xs-offset-1 col-sm-6 col-sm-offset-0 col-md-8 col-lg-8">
221
				<div id="cadre_titre" class="titre_banner col-xs-10 col-xs-offset-1 col-sm-6 col-sm-offset-0 col-md-8 col-lg-8">
223
					<div class="row">
222
					<div class="row">
224
						<p id="acces_controle" class="titre_controle"><?= $l_title ?></p>
223
						<p id="acces_controle" class="titre_controle"><?= $l_title ?></p>
225
					</div>
224
					</div>
226
					<div class="row">
225
					<div class="row">
227
					<?php if (isset($changePasswordMessage)): ?>
226
					<?php if (isset($changePasswordMessage)): ?>
228
						<?= $changePasswordMessage ?>
227
						<?= $changePasswordMessage ?>
229
					<?php endif; ?>
228
					<?php endif; ?>
230
					</div>
229
					</div>
231
				</div>
230
				</div>
232
			</div>
231
			</div>
233
 
232
 
234
			<!-- Main content box -->
233
			<!-- Main content box -->
235
			<div class="row">
234
			<div class="row">
236
				<form name="master" id="contenu_acces" action="<?= $current_page ?>" method="post" class="col-xs-12 col-sm-12 col-md-offset-1 col-md-10">
235
				<form name="master" id="contenu_acces" action="<?= $current_page ?>" method="post" class="col-xs-12 col-sm-12 col-md-offset-1 col-md-10">
237
					<input class="row" type="hidden" name="action" value="checkpass">
236
					<input class="row" type="hidden" name="action" value="checkpass">
238
 
237
 
239
					<div class="row input_row">
238
					<div class="row input_row">
240
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l1 ?></div>
239
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l1 ?></div>
241
						<div class="col-xs-6 col-sm-6 col-md-4">
240
						<div class="col-xs-6 col-sm-6 col-md-4">
242
							<input type="text" name="login" class="form-control" id="input_value" value="" label="test">
241
							<input type="text" name="login" class="form-control" id="input_value" value="" label="test">
243
						</div>
242
						</div>
244
					</div>
243
					</div>
245
 
244
 
246
					<div class="row input_row">
245
					<div class="row input_row">
247
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l2 ?></div>
246
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l2 ?></div>
248
						<div class="col-xs-6 col-sm-6 col-md-4">
247
						<div class="col-xs-6 col-sm-6 col-md-4">
249
							<input type="password" class="form-control" id="input_value" name="passwd" value="">
248
							<input type="password" class="form-control" id="input_value" name="passwd" value="">
250
						</div>
249
						</div>
251
					</div>
250
					</div>
252
 
251
 
253
					<div class="row input_row">
252
					<div class="row input_row">
254
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l3 ?></div>
253
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l3 ?></div>
255
						<div class="col-xs-6 col-sm-6 col-md-4">
254
						<div class="col-xs-6 col-sm-6 col-md-4">
256
							<input class="form-control" id="input_value" type="password" name="newpasswd" id="passwordPwd" value="" autocomplete="off" onkeyup="chkPass(this.value);" />
255
							<input class="form-control" id="input_value" type="password" name="newpasswd" id="passwordPwd" value="" autocomplete="off" onkeyup="chkPass(this.value);" />
257
						</div>
256
						</div>
258
						<div class="col-xs-3 col-sm-3 col-md-4">	
257
						<div class="col-xs-3 col-sm-3 col-md-4">	
259
							<input type="text" id="passwordTxt" name="passwordTxt" autocomplete="off" onkeyup="chkPass(this.value);" class="hide" />
258
							<input type="text" id="passwordTxt" name="passwordTxt" autocomplete="off" onkeyup="chkPass(this.value);" class="hide" />
260
						</div>
259
						</div>
261
					</div>
260
					</div>
262
			
261
			
263
					<div class="row input_row">
262
					<div class="row input_row">
264
						
263
						
265
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_eval_pass ?></div>
264
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_eval_pass ?></div>
266
						<div class="col-xs-6 col-sm-6 col-md-4">
265
						<div class="col-xs-6 col-sm-6 col-md-4">
267
							<div class="row scorebarDisplay">
266
							<div class="row scorebarDisplay">
268
								<div id="scorebarBorder" class="col-xs-12 col-sm-12">
267
								<div id="scorebarBorder" class="col-xs-12 col-sm-12">
269
									<div id="score" class="row">0%</div>
268
									<div id="score" class="row">0%</div>
270
									<div id="scorebar" class="row">&nbsp;</div>
269
									<div id="scorebar" class="row">&nbsp;</div>
271
								</div>
270
								</div>
272
							</div>
271
							</div>
273
							<div class="row">
272
							<div class="row">
274
								<div id="lien_pass" class="col-xs-12 col-sm-12"><?= $l_passwordmeter ?></div>
273
								<div id="lien_pass" class="col-xs-12 col-sm-12"><?= $l_passwordmeter ?></div>
275
							</div>
274
							</div>
276
						</div>
275
						</div>
277
					</div>
276
					</div>
278
 
277
 
279
					<div class="row input_row">
278
					<div class="row input_row">
280
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l4 ?></div>
279
						<div class="label_name col-xs-3 col-sm-3 col-md-4"><?= $l_form_l4 ?></div>
281
						<div class="col-xs-6 col-sm-6 col-md-4">
280
						<div class="col-xs-6 col-sm-6 col-md-4">
282
							<input type="password" class="form-control" id="input_value" name="newpasswd2" value="">
281
							<input type="password" class="form-control" id="input_value" name="newpasswd2" value="">
283
						</div>
282
						</div>
284
					</div>
283
					</div>
285
		
284
		
286
					<div class="row input_row">
285
					<div class="row input_row">
287
						<div class="col-xs-5 col-xs-offset-1 col-sm-4 col-sm-offset-2">
286
						<div class="col-xs-5 col-xs-offset-1 col-sm-4 col-sm-offset-2">
288
							<input id="buttons" class="btn btn-default" value="<?= $l_form_button_retour ?>" onclick="window.location.href = '<?= $homepage ?>';"></input>
287
							<input id="buttons" class="btn btn-default" value="<?= $l_form_button_retour ?>" onclick="window.location.href = '<?= $homepage ?>';"></input>
289
						</div>
288
						</div>
290
						<div class="col-xs-5 col-sm-4">
289
						<div class="col-xs-5 col-sm-4">
291
							<button type="submit" class="btn btn-primary" id="buttons"><?= $l_form_button_valid ?></button>
290
							<button type="submit" class="btn btn-primary" id="buttons"><?= $l_form_button_valid ?></button>
292
						</div>
291
						</div>
293
					</div>
292
					</div>
294
				</div>
293
				</div>
295
				
294
				
296
				</form>
295
				</form>
297
				<div class="row">
296
				<div class="row">
298
					<div id="boite_logo" class="img_banner col-xs-12 hidden-sm hidden-md hidden-lg">
297
					<div id="boite_logo" class="img_banner col-xs-12 hidden-sm hidden-md hidden-lg">
299
						<img class="img-responsive image" src="images/organisme.png">
298
						<img class="img-responsive image" src="images/organisme.png">
300
					</div>
299
					</div>
301
				</div>
300
				</div>
302
			</div>
301
			</div>
303
			<div id="info_pass">
302
			<div id="info_pass">
304
				<table id="tablePwdStatus" cellpadding="5" cellspacing="1" border="0">
303
				<table id="tablePwdStatus" cellpadding="5" cellspacing="1" border="0">
305
					<tr>
304
					<tr>
306
						<th colspan="2">Additions</th>
305
						<th colspan="2">Additions</th>
307
						<th class="txtCenter">Type</th>
306
						<th class="txtCenter">Type</th>
308
						<th class="txtCenter">Rate</th>
307
						<th class="txtCenter">Rate</th>
309
						<th class="txtCenter">Count</th>
308
						<th class="txtCenter">Count</th>
310
						<th class="txtCenter">Bonus</th>
309
						<th class="txtCenter">Bonus</th>
311
					</tr>
310
					</tr>
312
					<tr>
311
					<tr>
313
						<td width="1%"><div id="div_nLength" class="fail">&nbsp;</div></td>
312
						<td width="1%"><div id="div_nLength" class="fail">&nbsp;</div></td>
314
						<td width="94%">Number of Characters</td>
313
						<td width="94%">Number of Characters</td>
315
						<td width="1%" class="txtCenter">Flat</td>
314
						<td width="1%" class="txtCenter">Flat</td>
316
						<td width="1%" class="txtCenter italic">+(n*4)</td>
315
						<td width="1%" class="txtCenter italic">+(n*4)</td>
317
						<td width="1%"><div id="nLength" class="box">&nbsp;</div></td>
316
						<td width="1%"><div id="nLength" class="box">&nbsp;</div></td>
318
						<td width="1%"><div id="nLengthBonus" class="boxPlus">&nbsp;</div></td>
317
						<td width="1%"><div id="nLengthBonus" class="boxPlus">&nbsp;</div></td>
319
					</tr>
318
					</tr>
320
					<tr>
319
					<tr>
321
						<td><div id="div_nAlphaUC" class="fail">&nbsp;</div></td>
320
						<td><div id="div_nAlphaUC" class="fail">&nbsp;</div></td>
322
						<td>Uppercase Letters</td>
321
						<td>Uppercase Letters</td>
323
						<td class="txtCenter">Cond/Incr</td>
322
						<td class="txtCenter">Cond/Incr</td>
324
						<td nowrap="nowrap" class="txtCenter italic">+((len-n)*2)</td>
323
						<td nowrap="nowrap" class="txtCenter italic">+((len-n)*2)</td>
325
						<td><div id="nAlphaUC" class="box">&nbsp;</div></td>
324
						<td><div id="nAlphaUC" class="box">&nbsp;</div></td>
326
						<td><div id="nAlphaUCBonus" class="boxPlus">&nbsp;</div></td>
325
						<td><div id="nAlphaUCBonus" class="boxPlus">&nbsp;</div></td>
327
					</tr>	
326
					</tr>	
328
					<tr>
327
					<tr>
329
						<td><div id="div_nAlphaLC" class="fail">&nbsp;</div></td>
328
						<td><div id="div_nAlphaLC" class="fail">&nbsp;</div></td>
330
						<td>Lowercase Letters</td>
329
						<td>Lowercase Letters</td>
331
						<td class="txtCenter">Cond/Incr</td>
330
						<td class="txtCenter">Cond/Incr</td>
332
						<td class="txtCenter italic">+((len-n)*2)</td>
331
						<td class="txtCenter italic">+((len-n)*2)</td>
333
						<td><div id="nAlphaLC" class="box">&nbsp;</div></td>
332
						<td><div id="nAlphaLC" class="box">&nbsp;</div></td>
334
						<td><div id="nAlphaLCBonus" class="boxPlus">&nbsp;</div></td>
333
						<td><div id="nAlphaLCBonus" class="boxPlus">&nbsp;</div></td>
335
					</tr>
334
					</tr>
336
					<tr>
335
					<tr>
337
						<td><div id="div_nNumber" class="fail">&nbsp;</div></td>
336
						<td><div id="div_nNumber" class="fail">&nbsp;</div></td>
338
						<td>Numbers</td>
337
						<td>Numbers</td>
339
						<td class="txtCenter">Cond</td>
338
						<td class="txtCenter">Cond</td>
340
						<td class="txtCenter italic">+(n*4)</td>
339
						<td class="txtCenter italic">+(n*4)</td>
341
						<td><div id="nNumber" class="box">&nbsp;</div></td>
340
						<td><div id="nNumber" class="box">&nbsp;</div></td>
342
						<td><div id="nNumberBonus" class="boxPlus">&nbsp;</div></td>
341
						<td><div id="nNumberBonus" class="boxPlus">&nbsp;</div></td>
343
					</tr>
342
					</tr>
344
					<tr>
343
					<tr>
345
						<td><div id="div_nSymbol" class="fail">&nbsp;</div></td>
344
						<td><div id="div_nSymbol" class="fail">&nbsp;</div></td>
346
						<td>Symbols</td>
345
						<td>Symbols</td>
347
						<td class="txtCenter">Flat</td>
346
						<td class="txtCenter">Flat</td>
348
						<td class="txtCenter italic">+(n*6)</td>
347
						<td class="txtCenter italic">+(n*6)</td>
349
						<td><div id="nSymbol" class="box">&nbsp;</div></td>
348
						<td><div id="nSymbol" class="box">&nbsp;</div></td>
350
						<td><div id="nSymbolBonus" class="boxPlus">&nbsp;</div></td>
349
						<td><div id="nSymbolBonus" class="boxPlus">&nbsp;</div></td>
351
					</tr>
350
					</tr>
352
					<tr>
351
					<tr>
353
						<td><div id="div_nMidChar" class="fail">&nbsp;</div></td>
352
						<td><div id="div_nMidChar" class="fail">&nbsp;</div></td>
354
						<td>Middle Numbers or Symbols</td>
353
						<td>Middle Numbers or Symbols</td>
355
						<td class="txtCenter">Flat</td>
354
						<td class="txtCenter">Flat</td>
356
						<td class="txtCenter italic">+(n*2)</td>
355
						<td class="txtCenter italic">+(n*2)</td>
357
						<td><div id="nMidChar" class="box">&nbsp;</div></td>
356
						<td><div id="nMidChar" class="box">&nbsp;</div></td>
358
						<td><div id="nMidCharBonus" class="boxPlus">&nbsp;</div></td>
357
						<td><div id="nMidCharBonus" class="boxPlus">&nbsp;</div></td>
359
					</tr>
358
					</tr>
360
					<tr>
359
					<tr>
361
						<td><div id="div_nRequirements" class="fail">&nbsp;</div></td>
360
						<td><div id="div_nRequirements" class="fail">&nbsp;</div></td>
362
						<td>Requirements</td>
361
						<td>Requirements</td>
363
						<td class="txtCenter">Flat</td>
362
						<td class="txtCenter">Flat</td>
364
						<td class="txtCenter italic">+(n*2)</td>
363
						<td class="txtCenter italic">+(n*2)</td>
365
						<td><div id="nRequirements" class="box">&nbsp;</div></td>
364
						<td><div id="nRequirements" class="box">&nbsp;</div></td>
366
						<td><div id="nRequirementsBonus" class="boxPlus">&nbsp;</div></td>
365
						<td><div id="nRequirementsBonus" class="boxPlus">&nbsp;</div></td>
367
					</tr>
366
					</tr>
368
					<tr>
367
					<tr>
369
						<th colspan="6">Deductions</th>
368
						<th colspan="6">Deductions</th>
370
					</tr>
369
					</tr>
371
					<tr>
370
					<tr>
372
						<td width="1%"><div id="div_nAlphasOnly" class="pass">&nbsp;</div></td>
371
						<td width="1%"><div id="div_nAlphasOnly" class="pass">&nbsp;</div></td>
373
						<td width="94%">Letters Only</td>
372
						<td width="94%">Letters Only</td>
374
						<td width="1%" class="txtCenter">Flat</td>
373
						<td width="1%" class="txtCenter">Flat</td>
375
						<td width="1%" class="txtCenter italic">-n</td>
374
						<td width="1%" class="txtCenter italic">-n</td>
376
						<td width="1%"><div id="nAlphasOnly" class="box">&nbsp;</div></td>
375
						<td width="1%"><div id="nAlphasOnly" class="box">&nbsp;</div></td>
377
						<td width="1%"><div id="nAlphasOnlyBonus" class="boxMinus">&nbsp;</div></td>
376
						<td width="1%"><div id="nAlphasOnlyBonus" class="boxMinus">&nbsp;</div></td>
378
					</tr>	
377
					</tr>	
379
					<tr>
378
					<tr>
380
						<td><div id="div_nNumbersOnly" class="pass">&nbsp;</div></td>
379
						<td><div id="div_nNumbersOnly" class="pass">&nbsp;</div></td>
381
						<td>Numbers Only</td>
380
						<td>Numbers Only</td>
382
						<td class="txtCenter">Flat</td>
381
						<td class="txtCenter">Flat</td>
383
						<td class="txtCenter italic">-n</td>
382
						<td class="txtCenter italic">-n</td>
384
						<td><div id="nNumbersOnly" class="box">&nbsp;</div></td>
383
						<td><div id="nNumbersOnly" class="box">&nbsp;</div></td>
385
						<td><div id="nNumbersOnlyBonus" class="boxMinus">&nbsp;</div></td>
384
						<td><div id="nNumbersOnlyBonus" class="boxMinus">&nbsp;</div></td>
386
					</tr>	
385
					</tr>	
387
					<tr>
386
					<tr>
388
						<td><div id="div_nRepChar" class="pass">&nbsp;</div></td>
387
						<td><div id="div_nRepChar" class="pass">&nbsp;</div></td>
389
						<td>Repeat Characters (Case Insensitive)</td>
388
						<td>Repeat Characters (Case Insensitive)</td>
390
						<td class="txtCenter">Comp</td>
389
						<td class="txtCenter">Comp</td>
391
						<td nowrap="nowrap" class="txtCenter italic"> - </td>
390
						<td nowrap="nowrap" class="txtCenter italic"> - </td>
392
						<td><div id="nRepChar" class="box">&nbsp;</div></td>
391
						<td><div id="nRepChar" class="box">&nbsp;</div></td>
393
						<td><div id="nRepCharBonus" class="boxMinus">&nbsp;</div></td>
392
						<td><div id="nRepCharBonus" class="boxMinus">&nbsp;</div></td>
394
					</tr>	
393
					</tr>	
395
					<tr>
394
					<tr>
396
						<td><div id="div_nConsecAlphaUC" class="pass">&nbsp;</div></td>
395
						<td><div id="div_nConsecAlphaUC" class="pass">&nbsp;</div></td>
397
						<td>Consecutive Uppercase Letters</td>
396
						<td>Consecutive Uppercase Letters</td>
398
						<td class="txtCenter">Flat</td>
397
						<td class="txtCenter">Flat</td>
399
						<td class="txtCenter italic">-(n*2)</td>
398
						<td class="txtCenter italic">-(n*2)</td>
400
						<td><div id="nConsecAlphaUC" class="box">&nbsp;</div></td>
399
						<td><div id="nConsecAlphaUC" class="box">&nbsp;</div></td>
401
						<td><div id="nConsecAlphaUCBonus" class="boxMinus">&nbsp;</div></td>
400
						<td><div id="nConsecAlphaUCBonus" class="boxMinus">&nbsp;</div></td>
402
					</tr>	
401
					</tr>	
403
					<tr>
402
					<tr>
404
						<td><div id="div_nConsecAlphaLC" class="pass">&nbsp;</div></td>
403
						<td><div id="div_nConsecAlphaLC" class="pass">&nbsp;</div></td>
405
						<td>Consecutive Lowercase Letters</td>
404
						<td>Consecutive Lowercase Letters</td>
406
						<td class="txtCenter">Flat</td>
405
						<td class="txtCenter">Flat</td>
407
						<td class="txtCenter italic">-(n*2)</td>
406
						<td class="txtCenter italic">-(n*2)</td>
408
						<td><div id="nConsecAlphaLC" class="box">&nbsp;</div></td>
407
						<td><div id="nConsecAlphaLC" class="box">&nbsp;</div></td>
409
						<td><div id="nConsecAlphaLCBonus" class="boxMinus">&nbsp;</div></td>
408
						<td><div id="nConsecAlphaLCBonus" class="boxMinus">&nbsp;</div></td>
410
					</tr>	
409
					</tr>	
411
					<tr>
410
					<tr>
412
						<td><div id="div_nConsecNumber" class="pass">&nbsp;</div></td>
411
						<td><div id="div_nConsecNumber" class="pass">&nbsp;</div></td>
413
						<td>Consecutive Numbers</td>
412
						<td>Consecutive Numbers</td>
414
						<td class="txtCenter">Flat</td>
413
						<td class="txtCenter">Flat</td>
415
						<td class="txtCenter italic">-(n*2)</td>
414
						<td class="txtCenter italic">-(n*2)</td>
416
						<td><div id="nConsecNumber" class="box">&nbsp;</div></td>
415
						<td><div id="nConsecNumber" class="box">&nbsp;</div></td>
417
						<td><div id="nConsecNumberBonus" class="boxMinus">&nbsp;</div></td>
416
						<td><div id="nConsecNumberBonus" class="boxMinus">&nbsp;</div></td>
418
					</tr>	
417
					</tr>	
419
					<tr>
418
					<tr>
420
						<td><div id="div_nSeqAlpha" class="pass">&nbsp;</div></td>
419
						<td><div id="div_nSeqAlpha" class="pass">&nbsp;</div></td>
421
						<td>Sequential Letters (3+)</td>
420
						<td>Sequential Letters (3+)</td>
422
						<td class="txtCenter">Flat</td>
421
						<td class="txtCenter">Flat</td>
423
						<td class="txtCenter italic">-(n*3)</td>
422
						<td class="txtCenter italic">-(n*3)</td>
424
						<td><div id="nSeqAlpha" class="box">&nbsp;</div></td>
423
						<td><div id="nSeqAlpha" class="box">&nbsp;</div></td>
425
						<td><div id="nSeqAlphaBonus" class="boxMinus">&nbsp;</div></td>
424
						<td><div id="nSeqAlphaBonus" class="boxMinus">&nbsp;</div></td>
426
					</tr>	
425
					</tr>	
427
					<tr>
426
					<tr>
428
						<td><div id="div_nSeqNumber" class="pass">&nbsp;</div></td>
427
						<td><div id="div_nSeqNumber" class="pass">&nbsp;</div></td>
429
						<td>Sequential Numbers (3+)</td>
428
						<td>Sequential Numbers (3+)</td>
430
						<td class="txtCenter">Flat</td>
429
						<td class="txtCenter">Flat</td>
431
						<td class="txtCenter italic">-(n*3)</td>
430
						<td class="txtCenter italic">-(n*3)</td>
432
						<td><div id="nSeqNumber" class="box">&nbsp;</div></td>
431
						<td><div id="nSeqNumber" class="box">&nbsp;</div></td>
433
						<td><div id="nSeqNumberBonus" class="boxMinus">&nbsp;</div></td>
432
						<td><div id="nSeqNumberBonus" class="boxMinus">&nbsp;</div></td>
434
					</tr>	
433
					</tr>	
435
					<tr>
434
					<tr>
436
						<td><div id="div_nSeqSymbol" class="pass">&nbsp;</div></td>
435
						<td><div id="div_nSeqSymbol" class="pass">&nbsp;</div></td>
437
						<td>Sequential Symbols (3+)</td>
436
						<td>Sequential Symbols (3+)</td>
438
						<td class="txtCenter">Flat</td>
437
						<td class="txtCenter">Flat</td>
439
						<td class="txtCenter italic">-(n*3)</td>
438
						<td class="txtCenter italic">-(n*3)</td>
440
						<td><div id="nSeqSymbol" class="box">&nbsp;</div></td>
439
						<td><div id="nSeqSymbol" class="box">&nbsp;</div></td>
441
						<td><div id="nSeqSymbolBonus" class="boxMinus">&nbsp;</div></td>
440
						<td><div id="nSeqSymbolBonus" class="boxMinus">&nbsp;</div></td>
442
					</tr>	
441
					</tr>	
443
					<tr>
442
					<tr>
444
						<th colspan="6">Legend</th>
443
						<th colspan="6">Legend</th>
445
					</tr>
444
					</tr>
446
					<tr>
445
					<tr>
447
						<td colspan="6">
446
						<td colspan="6">
448
							<ul id="listLegend">
447
							<ul id="listLegend">
449
								<li><div class="exceed imgLegend">&nbsp;</div><span class="bold">Exceptional:</span> Exceeds minimum standards. Additional bonuses are applied.</li>
448
								<li><div class="exceed imgLegend">&nbsp;</div><span class="bold">Exceptional:</span> Exceeds minimum standards. Additional bonuses are applied.</li>
450
								<li><div class="pass imgLegend">&nbsp;</div><span class="bold">Sufficient:</span> Meets minimum standards. Additional bonuses are applied.</li>
449
								<li><div class="pass imgLegend">&nbsp;</div><span class="bold">Sufficient:</span> Meets minimum standards. Additional bonuses are applied.</li>
451
								<li><div class="warn imgLegend">&nbsp;</div><span class="bold">Warning:</span> Advisory against employing bad practices. Overall score is reduced.</li>
450
								<li><div class="warn imgLegend">&nbsp;</div><span class="bold">Warning:</span> Advisory against employing bad practices. Overall score is reduced.</li>
452
								<li><div class="fail imgLegend">&nbsp;</div><span class="bold">Failure:</span> Does not meet the minimum standards. Overall score is reduced.</li>
451
								<li><div class="fail imgLegend">&nbsp;</div><span class="bold">Failure:</span> Does not meet the minimum standards. Overall score is reduced.</li>
453
							</ul>
452
							</ul>
454
						</td>
453
						</td>
455
					</tr>
454
					</tr>
456
				</table>
455
				</table>
457
				<table id="tablePwdNotes" cellpadding="5" cellspacing="1" border="0">
456
				<table id="tablePwdNotes" cellpadding="5" cellspacing="1" border="0">
458
					<tr>
457
					<tr>
459
						<th>Quick Footnotes</th>
458
						<th>Quick Footnotes</th>
460
					</tr>
459
					</tr>
461
					<tr>
460
					<tr>
462
						<td>
461
						<td>
463
							&bull; <strong>Flat:</strong> Rates that add/remove in non-changing increments.<br>
462
							&bull; <strong>Flat:</strong> Rates that add/remove in non-changing increments.<br>
464
							&bull; <strong>Incr:</strong> Rates that add/remove in adjusting increments.<br>
463
							&bull; <strong>Incr:</strong> Rates that add/remove in adjusting increments.<br>
465
							&bull; <strong>Cond:</strong> Rates that add/remove depending on additional factors.<br>
464
							&bull; <strong>Cond:</strong> Rates that add/remove depending on additional factors.<br>
466
							&bull; <strong>Comp:</strong> Rates that are too complex to summarize. See source code for details.<br>
465
							&bull; <strong>Comp:</strong> Rates that are too complex to summarize. See source code for details.<br>
467
							&bull; <strong>n:</strong> Refers to the total number of occurrences.<br>
466
							&bull; <strong>n:</strong> Refers to the total number of occurrences.<br>
468
							&bull; <strong>len:</strong> Refers to the total password length.<br>
467
							&bull; <strong>len:</strong> Refers to the total password length.<br>
469
							&bull; Additional bonus scores are given for increased character variety.<br>
468
							&bull; Additional bonus scores are given for increased character variety.<br>
470
							&bull; Final score is a cumulative result of all bonuses minus deductions.<br>
469
							&bull; Final score is a cumulative result of all bonuses minus deductions.<br>
471
							&bull; Final score is capped with a minimum of 0 and a maximum of 100.<br>
470
							&bull; Final score is capped with a minimum of 0 and a maximum of 100.<br>
472
							&bull; Score and Complexity ratings are not conditional on meeting minimum requirements.<br>
471
							&bull; Score and Complexity ratings are not conditional on meeting minimum requirements.<br>
473
						</td>
472
						</td>
474
					</tr>
473
					</tr>
475
				</table>
474
				</table>
476
			</div>
475
			</div>
477
		</div>
476
		</div>
478
	</div>
477
	</div>
479
	</body>
478
	</body>
480
</html>
479
</html>
481
 
480