Updated to reflect live site

Signed-off-by: Sophia Atkinson <sophialul@protonmail.com>
This commit is contained in:
Sophia Atkinson 2023-01-21 05:10:16 -08:00
parent 3cf824cc5c
commit af6f76fbcb
163 changed files with 1471 additions and 12177 deletions

View File

@ -40,11 +40,6 @@ switch( $action ) {
echo json_encode(array('success'=>$query));
break;
case 'logout':
// unused for the moment
yourls_logout();
break;
default:
yourls_do_action( 'yourls_ajax_'.$action );

83
admin/install.php Normal file
View File

@ -0,0 +1,83 @@
<?php
define( 'YOURLS_ADMIN', true );
define( 'YOURLS_INSTALLING', true );
require_once( dirname( __DIR__ ).'/includes/load-yourls.php' );
$error = array();
$warning = array();
$success = array();
// Check pre-requisites
if ( !yourls_check_PDO() ) {
$error[] = yourls__( 'PHP extension for PDO not found' );
yourls_debug_log( 'PHP PDO extension not found' );
}
if ( !yourls_check_database_version() ) {
$error[] = yourls_s( '%s version is too old. Ask your server admin for an upgrade.', 'MySQL' );
yourls_debug_log( 'MySQL version: ' . yourls_get_database_version() );
}
if ( !yourls_check_php_version() ) {
$error[] = yourls_s( '%s version is too old. Ask your server admin for an upgrade.', 'PHP' );
yourls_debug_log( 'PHP version: ' . PHP_VERSION );
}
// Is YOURLS already installed ?
if ( yourls_is_installed() ) {
$error[] = yourls__( 'YOURLS already installed.' );
// check if .htaccess exists, recreate otherwise. No error checking.
if( !file_exists( YOURLS_ABSPATH.'/.htaccess' ) ) {
yourls_create_htaccess();
}
}
// Start install if possible and needed
if ( isset($_REQUEST['install']) && count( $error ) == 0 ) {
// Create/update .htaccess file
if ( yourls_create_htaccess() ) {
$success[] = yourls__( 'File <tt>.htaccess</tt> successfully created/updated.' );
} else {
$warning[] = yourls__( 'Could not write file <tt>.htaccess</tt> in YOURLS root directory. You will have to do it manually. See <a href="http://yourls.org/htaccess">how</a>.' );
}
// Create SQL tables
$install = yourls_create_sql_tables();
if ( isset( $install['error'] ) )
$error = array_merge( $error, $install['error'] );
if ( isset( $install['success'] ) )
$success = array_merge( $success, $install['success'] );
}
// Start output
yourls_html_head( 'install', yourls__( 'Install YOURLS' ) );
?>
<div id="login">
<form method="post" action="?"><?php // reset any QUERY parameters ?>
<p>
<img src="<?php yourls_site_url(); ?>/images/yourls-logo.svg" id="yourls-logo" alt="YOURLS" title="YOURLS" />
</p>
<?php
// Print errors, warnings and success messages
foreach ( array ('error', 'warning', 'success') as $info ) {
if ( count( $$info ) > 0 ) {
echo "<ul class='$info'>";
foreach( $$info as $msg ) {
echo '<li>'.$msg."</li>\n";
}
echo '</ul>';
}
}
// Display install button or link to admin area if applicable
if( !yourls_is_installed() && !isset($_REQUEST['install']) ) {
echo '<p style="text-align: center;"><input type="submit" name="install" value="' . yourls__( 'Install YOURLS') .'" class="button" /></p>';
} else {
if( count($error) == 0 )
echo '<p style="text-align: center;">&raquo; <a href="'.yourls_admin_url().'" title="' . yourls__( 'YOURLS Administration Page') . '">' . yourls__( 'YOURLS Administration Page') . '</a></p>';
}
?>
</form>
</div>
<?php yourls_html_footer(); ?>

View File

@ -13,25 +13,27 @@ if( isset( $_GET['page'] ) && !empty( $_GET['page'] ) ) {
if( isset( $_GET['action'] ) ) {
// Check nonce
yourls_verify_nonce( 'manage_plugins', $_REQUEST['nonce'] );
yourls_verify_nonce( 'manage_plugins', $_REQUEST['nonce'] ?? '');
// Check plugin file is valid
if( isset( $_GET['plugin'] ) && yourls_validate_plugin_file( YOURLS_PLUGINDIR.'/'.$_GET['plugin'].'/plugin.php') ) {
if(isset( $_GET['plugin'] ) && yourls_is_a_plugin_file(YOURLS_PLUGINDIR . '/' . $_GET['plugin'] . '/plugin.php') ) {
// Activate / Deactive
switch( $_GET['action'] ) {
case 'activate':
$result = yourls_activate_plugin( $_GET['plugin'].'/plugin.php' );
if( $result === true )
yourls_redirect( yourls_admin_url( 'plugins.php?success=activated' ), 302 );
if( $result === true ) {
yourls_redirect(yourls_admin_url('plugins.php?success=activated'), 302);
exit();
}
break;
case 'deactivate':
$result = yourls_deactivate_plugin( $_GET['plugin'].'/plugin.php' );
if( $result === true )
yourls_redirect( yourls_admin_url( 'plugins.php?success=deactivated' ), 302 );
if( $result === true ) {
yourls_redirect(yourls_admin_url('plugins.php?success=deactivated'), 302);
exit();
}
break;
default:

View File

@ -2,8 +2,6 @@
define( 'YOURLS_ADMIN', true );
define( 'YOURLS_UPGRADING', true );
require_once( dirname( __DIR__ ).'/includes/load-yourls.php' );
require_once( YOURLS_INC.'/functions-upgrade.php' );
require_once( YOURLS_INC.'/functions-install.php' );
yourls_maybe_require_auth();
yourls_html_head( 'upgrade', yourls__( 'Upgrade YOURLS' ) );
@ -29,7 +27,7 @@ if ( !yourls_upgrade_is_needed() ) {
// From what are we upgrading?
if ( isset( $_GET['oldver'] ) && isset( $_GET['oldsql'] ) ) {
$oldver = yourls_sanitize_version($_GET['oldver']);
$oldsql = (intval)($_GET['oldsql']);
$oldsql = intval($_GET['oldsql']);
} else {
list( $oldver, $oldsql ) = yourls_get_current_version_from_sql();
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -1 +0,0 @@
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 263.58303031159966 60" class="font"><!----><!----><!----><g data-v-423bf9ae="" id="d0890c87-fb2b-4e20-a9fd-2483f6f3120f" fill="black" transform="matrix(4.633204701445071,0,0,4.633204701445071,-7.830112678154194,-16.864865360883996)"><path d="M4.24 13.92L4.24 13.92L4.24 13.92Q3.53 13.92 2.85 13.57L2.85 13.57L2.85 13.57Q2.17 13.23 1.69 12.67L1.69 12.67L2.38 12.07L2.38 12.07Q3.23 13.05 4.33 13.05L4.33 13.05L4.33 13.05Q4.97 13.05 5.39 12.78L5.39 12.78L5.39 12.78Q5.81 12.50 5.81 12.01L5.81 12.01L5.81 12.01Q5.81 11.70 5.66 11.46L5.66 11.46L5.66 11.46Q5.52 11.21 5.20 11.01L5.20 11.01L5.20 11.01Q4.89 10.81 4.64 10.70L4.64 10.70L4.64 10.70Q4.40 10.58 3.95 10.42L3.95 10.42L3.95 10.42Q3.42 10.21 3.09 10.04L3.09 10.04L3.09 10.04Q2.76 9.87 2.41 9.62L2.41 9.62L2.41 9.62Q2.06 9.37 1.89 9.02L1.89 9.02L1.89 9.02Q1.72 8.68 1.72 8.25L1.72 8.25L1.72 8.25Q1.72 7.43 2.39 6.93L2.39 6.93L2.39 6.93Q3.07 6.43 4.12 6.43L4.12 6.43L4.12 6.43Q5.59 6.43 6.52 7.52L6.52 7.52L5.88 8.06L5.88 8.06Q5.08 7.29 4.09 7.29L4.09 7.29L4.09 7.29Q3.43 7.29 3.04 7.55L3.04 7.55L3.04 7.55Q2.65 7.80 2.65 8.23L2.65 8.23L2.65 8.23Q2.65 8.44 2.75 8.62L2.75 8.62L2.75 8.62Q2.86 8.81 2.98 8.93L2.98 8.93L2.98 8.93Q3.11 9.04 3.39 9.19L3.39 9.19L3.39 9.19Q3.67 9.34 3.84 9.40L3.84 9.40L3.84 9.40Q4.00 9.46 4.37 9.60L4.37 9.60L4.37 9.60Q4.93 9.81 5.23 9.96L5.23 9.96L5.23 9.96Q5.53 10.11 5.94 10.39L5.94 10.39L5.94 10.39Q6.36 10.67 6.54 11.05L6.54 11.05L6.54 11.05Q6.73 11.44 6.73 11.96L6.73 11.96L6.73 11.96Q6.73 12.85 6.06 13.38L6.06 13.38L6.06 13.38Q5.39 13.92 4.24 13.92ZM15.34 12.92L15.34 12.92L15.34 12.92Q14.43 13.92 12.94 13.92L12.94 13.92L12.94 13.92Q11.44 13.92 10.54 12.93L10.54 12.93L10.54 12.93Q9.63 11.94 9.63 10.18L9.63 10.18L9.63 10.18Q9.63 8.43 10.54 7.43L10.54 7.43L10.54 7.43Q11.44 6.43 12.94 6.43L12.94 6.43L12.94 6.43Q14.43 6.43 15.34 7.41L15.34 7.41L15.34 7.41Q16.24 8.40 16.24 10.16L16.24 10.16L16.24 10.16Q16.24 11.91 15.34 12.92ZM12.94 13.03L12.94 13.03L12.94 13.03Q14.01 13.03 14.62 12.27L14.62 12.27L14.62 12.27Q15.22 11.51 15.22 10.16L15.22 10.16L15.22 10.16Q15.22 8.81 14.63 8.06L14.63 8.06L14.63 8.06Q14.04 7.31 12.94 7.31L12.94 7.31L12.94 7.31Q11.82 7.31 11.24 8.04L11.24 8.04L11.24 8.04Q10.65 8.78 10.65 10.18L10.65 10.18L10.65 10.18Q10.65 11.54 11.24 12.29L11.24 12.29L11.24 12.29Q11.83 13.03 12.94 13.03ZM19.77 16.10L18.79 16.59L18.79 6.59L19.77 6.59L19.77 7.24L19.77 7.24Q20.19 6.85 20.64 6.64L20.64 6.64L20.64 6.64Q21.08 6.43 21.77 6.43L21.77 6.43L21.77 6.43Q23.21 6.43 24.05 7.44L24.05 7.44L24.05 7.44Q24.88 8.46 24.88 10.16L24.88 10.16L24.88 10.16Q24.88 11.93 24.03 12.92L24.03 12.92L24.03 12.92Q23.18 13.92 21.83 13.92L21.83 13.92L21.83 13.92Q20.54 13.92 19.77 13.02L19.77 13.02L19.77 16.10ZM21.71 13.03L21.71 13.03L21.71 13.03Q22.74 13.03 23.30 12.29L23.30 12.29L23.30 12.29Q23.86 11.55 23.86 10.16L23.86 10.16L23.86 10.16Q23.86 8.85 23.28 8.08L23.28 8.08L23.28 8.08Q22.69 7.31 21.66 7.31L21.66 7.31L21.66 7.31Q20.38 7.31 19.77 8.41L19.77 8.41L19.77 11.93L19.77 11.93Q20.62 13.03 21.71 13.03ZM30.81 13.68L30.81 13.68L30.81 13.68Q30.55 13.94 30.18 13.94L30.18 13.94L30.18 13.94Q29.82 13.94 29.56 13.68L29.56 13.68L29.56 13.68Q29.30 13.41 29.30 13.06L29.30 13.06L29.30 13.06Q29.30 12.71 29.56 12.45L29.56 12.45L29.56 12.45Q29.82 12.18 30.18 12.18L30.18 12.18L30.18 12.18Q30.55 12.18 30.81 12.45L30.81 12.45L30.81 12.45Q31.07 12.71 31.07 13.06L31.07 13.06L31.07 13.06Q31.07 13.41 30.81 13.68ZM37.60 13.75L36.68 13.75L34.92 6.59L35.92 6.59L37.09 11.72L37.09 11.72Q37.16 12.11 37.18 12.25L37.18 12.25L37.18 12.25Q37.20 12.19 37.23 11.99L37.23 11.99L37.23 11.99Q37.27 11.79 37.30 11.68L37.30 11.68L38.40 6.59L39.21 6.59L40.33 11.69L40.33 11.69Q40.36 11.82 40.46 12.32L40.46 12.32L40.46 12.32Q40.49 12.07 40.57 11.69L40.57 11.69L41.69 6.59L42.70 6.59L40.94 13.75L40.03 13.75L38.92 8.88L38.92 8.88Q38.86 8.68 38.79 8.25L38.79 8.25L38.79 8.25Q38.72 8.71 38.68 8.85L38.68 8.85L37.60 13.75ZM48.08 13.92L48.08 13.92L48.08 13.92Q46.38 13.92 46.38 12.21L46.38 12.21L46.38 7.48L44.69 7.48L44.69 6.59L46.38 6.59L46.38 4.13L47.36 3.64L47.36 6.59L49.76 6.59L49.76 7.48L47.36 7.48L47.36 11.79L47.36 11.79Q47.36 12.39 47.57 12.69L47.57 12.69L47.57 12.69Q47.77 12.99 48.41 12.99L48.41 12.99L48.41 12.99Q49.15 12.99 49.77 12.57L49.77 12.57L49.66 13.59L49.66 13.59Q49.06 13.92 48.08 13.92ZM57.18 4.69L57.18 4.69L57.18 4.69Q56.81 4.69 56.60 4.76L56.60 4.76L56.60 4.76Q56.38 4.83 56.29 4.99L56.29 4.99L56.29 4.99Q56.20 5.15 56.18 5.29L56.18 5.29L56.18 5.29Q56.15 5.42 56.15 5.67L56.15 5.67L56.15 6.59L58.06 6.59L58.06 7.48L56.15 7.48L56.15 12.87L58.06 12.87L58.06 13.75L53.69 13.75L53.69 12.87L55.17 12.87L55.17 7.48L53.69 7.48L53.69 6.59L55.17 6.59L55.17 5.52L55.17 5.52Q55.17 4.59 55.70 4.19L55.70 4.19L55.70 4.19Q56.22 3.78 57.08 3.78L57.08 3.78L57.08 3.78Q57.82 3.78 58.58 4.12L58.58 4.12L58.58 5.00L58.58 5.00Q57.93 4.69 57.18 4.69Z"></path></g><!----><!----></svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1 +0,0 @@
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 263.58303031159966 60" class="font"><!----><!----><!----><g data-v-423bf9ae="" id="c6682a1b-793b-4158-8f39-5848df271a73" fill="white" transform="matrix(4.633204701445071,0,0,4.633204701445071,-7.830112678154194,-16.864865360883996)"><path d="M4.24 13.92L4.24 13.92L4.24 13.92Q3.53 13.92 2.85 13.57L2.85 13.57L2.85 13.57Q2.17 13.23 1.69 12.67L1.69 12.67L2.38 12.07L2.38 12.07Q3.23 13.05 4.33 13.05L4.33 13.05L4.33 13.05Q4.97 13.05 5.39 12.78L5.39 12.78L5.39 12.78Q5.81 12.50 5.81 12.01L5.81 12.01L5.81 12.01Q5.81 11.70 5.66 11.46L5.66 11.46L5.66 11.46Q5.52 11.21 5.20 11.01L5.20 11.01L5.20 11.01Q4.89 10.81 4.64 10.70L4.64 10.70L4.64 10.70Q4.40 10.58 3.95 10.42L3.95 10.42L3.95 10.42Q3.42 10.21 3.09 10.04L3.09 10.04L3.09 10.04Q2.76 9.87 2.41 9.62L2.41 9.62L2.41 9.62Q2.06 9.37 1.89 9.02L1.89 9.02L1.89 9.02Q1.72 8.68 1.72 8.25L1.72 8.25L1.72 8.25Q1.72 7.43 2.39 6.93L2.39 6.93L2.39 6.93Q3.07 6.43 4.12 6.43L4.12 6.43L4.12 6.43Q5.59 6.43 6.52 7.52L6.52 7.52L5.88 8.06L5.88 8.06Q5.08 7.29 4.09 7.29L4.09 7.29L4.09 7.29Q3.43 7.29 3.04 7.55L3.04 7.55L3.04 7.55Q2.65 7.80 2.65 8.23L2.65 8.23L2.65 8.23Q2.65 8.44 2.75 8.62L2.75 8.62L2.75 8.62Q2.86 8.81 2.98 8.93L2.98 8.93L2.98 8.93Q3.11 9.04 3.39 9.19L3.39 9.19L3.39 9.19Q3.67 9.34 3.84 9.40L3.84 9.40L3.84 9.40Q4.00 9.46 4.37 9.60L4.37 9.60L4.37 9.60Q4.93 9.81 5.23 9.96L5.23 9.96L5.23 9.96Q5.53 10.11 5.94 10.39L5.94 10.39L5.94 10.39Q6.36 10.67 6.54 11.05L6.54 11.05L6.54 11.05Q6.73 11.44 6.73 11.96L6.73 11.96L6.73 11.96Q6.73 12.85 6.06 13.38L6.06 13.38L6.06 13.38Q5.39 13.92 4.24 13.92ZM15.34 12.92L15.34 12.92L15.34 12.92Q14.43 13.92 12.94 13.92L12.94 13.92L12.94 13.92Q11.44 13.92 10.54 12.93L10.54 12.93L10.54 12.93Q9.63 11.94 9.63 10.18L9.63 10.18L9.63 10.18Q9.63 8.43 10.54 7.43L10.54 7.43L10.54 7.43Q11.44 6.43 12.94 6.43L12.94 6.43L12.94 6.43Q14.43 6.43 15.34 7.41L15.34 7.41L15.34 7.41Q16.24 8.40 16.24 10.16L16.24 10.16L16.24 10.16Q16.24 11.91 15.34 12.92ZM12.94 13.03L12.94 13.03L12.94 13.03Q14.01 13.03 14.62 12.27L14.62 12.27L14.62 12.27Q15.22 11.51 15.22 10.16L15.22 10.16L15.22 10.16Q15.22 8.81 14.63 8.06L14.63 8.06L14.63 8.06Q14.04 7.31 12.94 7.31L12.94 7.31L12.94 7.31Q11.82 7.31 11.24 8.04L11.24 8.04L11.24 8.04Q10.65 8.78 10.65 10.18L10.65 10.18L10.65 10.18Q10.65 11.54 11.24 12.29L11.24 12.29L11.24 12.29Q11.83 13.03 12.94 13.03ZM19.77 16.10L18.79 16.59L18.79 6.59L19.77 6.59L19.77 7.24L19.77 7.24Q20.19 6.85 20.64 6.64L20.64 6.64L20.64 6.64Q21.08 6.43 21.77 6.43L21.77 6.43L21.77 6.43Q23.21 6.43 24.05 7.44L24.05 7.44L24.05 7.44Q24.88 8.46 24.88 10.16L24.88 10.16L24.88 10.16Q24.88 11.93 24.03 12.92L24.03 12.92L24.03 12.92Q23.18 13.92 21.83 13.92L21.83 13.92L21.83 13.92Q20.54 13.92 19.77 13.02L19.77 13.02L19.77 16.10ZM21.71 13.03L21.71 13.03L21.71 13.03Q22.74 13.03 23.30 12.29L23.30 12.29L23.30 12.29Q23.86 11.55 23.86 10.16L23.86 10.16L23.86 10.16Q23.86 8.85 23.28 8.08L23.28 8.08L23.28 8.08Q22.69 7.31 21.66 7.31L21.66 7.31L21.66 7.31Q20.38 7.31 19.77 8.41L19.77 8.41L19.77 11.93L19.77 11.93Q20.62 13.03 21.71 13.03ZM30.81 13.68L30.81 13.68L30.81 13.68Q30.55 13.94 30.18 13.94L30.18 13.94L30.18 13.94Q29.82 13.94 29.56 13.68L29.56 13.68L29.56 13.68Q29.30 13.41 29.30 13.06L29.30 13.06L29.30 13.06Q29.30 12.71 29.56 12.45L29.56 12.45L29.56 12.45Q29.82 12.18 30.18 12.18L30.18 12.18L30.18 12.18Q30.55 12.18 30.81 12.45L30.81 12.45L30.81 12.45Q31.07 12.71 31.07 13.06L31.07 13.06L31.07 13.06Q31.07 13.41 30.81 13.68ZM37.60 13.75L36.68 13.75L34.92 6.59L35.92 6.59L37.09 11.72L37.09 11.72Q37.16 12.11 37.18 12.25L37.18 12.25L37.18 12.25Q37.20 12.19 37.23 11.99L37.23 11.99L37.23 11.99Q37.27 11.79 37.30 11.68L37.30 11.68L38.40 6.59L39.21 6.59L40.33 11.69L40.33 11.69Q40.36 11.82 40.46 12.32L40.46 12.32L40.46 12.32Q40.49 12.07 40.57 11.69L40.57 11.69L41.69 6.59L42.70 6.59L40.94 13.75L40.03 13.75L38.92 8.88L38.92 8.88Q38.86 8.68 38.79 8.25L38.79 8.25L38.79 8.25Q38.72 8.71 38.68 8.85L38.68 8.85L37.60 13.75ZM48.08 13.92L48.08 13.92L48.08 13.92Q46.38 13.92 46.38 12.21L46.38 12.21L46.38 7.48L44.69 7.48L44.69 6.59L46.38 6.59L46.38 4.13L47.36 3.64L47.36 6.59L49.76 6.59L49.76 7.48L47.36 7.48L47.36 11.79L47.36 11.79Q47.36 12.39 47.57 12.69L47.57 12.69L47.57 12.69Q47.77 12.99 48.41 12.99L48.41 12.99L48.41 12.99Q49.15 12.99 49.77 12.57L49.77 12.57L49.66 13.59L49.66 13.59Q49.06 13.92 48.08 13.92ZM57.18 4.69L57.18 4.69L57.18 4.69Q56.81 4.69 56.60 4.76L56.60 4.76L56.60 4.76Q56.38 4.83 56.29 4.99L56.29 4.99L56.29 4.99Q56.20 5.15 56.18 5.29L56.18 5.29L56.18 5.29Q56.15 5.42 56.15 5.67L56.15 5.67L56.15 6.59L58.06 6.59L58.06 7.48L56.15 7.48L56.15 12.87L58.06 12.87L58.06 13.75L53.69 13.75L53.69 12.87L55.17 12.87L55.17 7.48L53.69 7.48L53.69 6.59L55.17 6.59L55.17 5.52L55.17 5.52Q55.17 4.59 55.70 4.19L55.70 4.19L55.70 4.19Q56.22 3.78 57.08 3.78L57.08 3.78L57.08 3.78Q57.82 3.78 58.58 4.12L58.58 4.12L58.58 5.00L58.58 5.00Q57.93 4.69 57.18 4.69Z"></path></g><!----><!----></svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="iconLeft" data-v-423bf9ae="" viewBox="0 0 416 90" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(4.6332 0 0 4.6332 144.49 -1.8649)" data-v-423bf9ae="">
<path d="m4.24 13.92q-0.71 0-1.39-0.35-0.68-0.34-1.16-0.9l0.69-0.6q0.85 0.98 1.95 0.98 0.64 0 1.06-0.27 0.42-0.28 0.42-0.77 0-0.31-0.15-0.55-0.14-0.25-0.46-0.45-0.31-0.2-0.56-0.31-0.24-0.12-0.69-0.28-0.53-0.21-0.86-0.38t-0.68-0.42-0.52-0.6q-0.17-0.34-0.17-0.77 0-0.82 0.67-1.32 0.68-0.5 1.73-0.5 1.47 0 2.4 1.09l-0.64 0.54q-0.8-0.77-1.79-0.77-0.66 0-1.05 0.26-0.39 0.25-0.39 0.68 0 0.21 0.1 0.39 0.11 0.19 0.23 0.31 0.13 0.11 0.41 0.26t0.45 0.21q0.16 0.06 0.53 0.2 0.56 0.21 0.86 0.36t0.71 0.43q0.42 0.28 0.6 0.66 0.19 0.39 0.19 0.91 0 0.89-0.67 1.42-0.67 0.54-1.82 0.54zm11.1-1q-0.91 1-2.4 1-1.5 0-2.4-0.99-0.91-0.99-0.91-2.75 0-1.75 0.91-2.75 0.9-1 2.4-1 1.49 0 2.4 0.98 0.9 0.99 0.9 2.75 0 1.75-0.9 2.76zm-2.4 0.11q1.07 0 1.68-0.76 0.6-0.76 0.6-2.11t-0.59-2.1-1.69-0.75q-1.12 0-1.7 0.73-0.59 0.74-0.59 2.14 0 1.36 0.59 2.11 0.59 0.74 1.7 0.74zm6.83 3.07-0.98 0.49v-10h0.98v0.65q0.42-0.39 0.87-0.6 0.44-0.21 1.13-0.21 1.44 0 2.28 1.01 0.83 1.02 0.83 2.72 0 1.77-0.85 2.76-0.85 1-2.2 1-1.29 0-2.06-0.9v3.08zm1.94-3.07q1.03 0 1.59-0.74t0.56-2.13q0-1.31-0.58-2.08-0.59-0.77-1.62-0.77-1.28 0-1.89 1.1v3.52q0.85 1.1 1.94 1.1zm9.1 0.65q-0.26 0.26-0.63 0.26-0.36 0-0.62-0.26-0.26-0.27-0.26-0.62t0.26-0.61q0.26-0.27 0.62-0.27 0.37 0 0.63 0.27 0.26 0.26 0.26 0.61t-0.26 0.62zm6.79 0.07h-0.92l-1.76-7.16h1l1.17 5.13q0.07 0.39 0.09 0.53 0.02-0.06 0.05-0.26 0.04-0.2 0.07-0.31l1.1-5.09h0.81l1.12 5.1q0.03 0.13 0.13 0.63 0.03-0.25 0.11-0.63l1.12-5.1h1.01l-1.76 7.16h-0.91l-1.11-4.87q-0.06-0.2-0.13-0.63-0.07 0.46-0.11 0.6l-1.08 4.9zm10.48 0.17q-1.7 0-1.7-1.71v-4.73h-1.69v-0.89h1.69v-2.46l0.98-0.49v2.95h2.4v0.89h-2.4v4.31q0 0.6 0.21 0.9 0.2 0.3 0.84 0.3 0.74 0 1.36-0.42l-0.11 1.02q-0.6 0.33-1.58 0.33zm9.1-9.23q-0.37 0-0.58 0.07-0.22 0.07-0.31 0.23t-0.11 0.3q-0.03 0.13-0.03 0.38v0.92h1.91v0.89h-1.91v5.39h1.91v0.88h-4.37v-0.88h1.48v-5.39h-1.48v-0.89h1.48v-1.07q0-0.93 0.53-1.33 0.52-0.41 1.38-0.41 0.74 0 1.5 0.34v0.88q-0.65-0.31-1.4-0.31z"/>
</g>
<g transform="matrix(1.4702 0 0 1.4702 -6.5121 -28.119)" data-v-423bf9ae="">
<path d="M76.31 35.389H47.45c-9.202 0-16.853 6.692-18.39 15.46h10.653c1.267-3.025 4.257-5.156 7.737-5.156h28.86c4.625 0 8.389 3.76 8.389 8.385v7.838c0 4.625-3.764 8.387-8.389 8.387H47.45c-.062 0-.12-.017-.182-.018H30.764c3.077 6.111 9.392 10.322 16.687 10.322h28.86c10.306 0 18.69-8.385 18.69-18.691v-7.838C95 43.774 86.616 35.389 76.31 35.389z"/>
<path d="M29.527 64.611l.001.004H40.97l-.004-.004H52.55c9.234 0 16.904-6.739 18.404-15.553H60.315c-1.246 3.072-4.252 5.249-7.766 5.249h-9.538v.004h-19.18v-.004h-.141a8.304 8.304 0 0 1-1.917-.242c-3.7-.872-6.471-4.183-6.471-8.146v-7.838c0-4.625 3.764-8.385 8.389-8.385h28.86c.059 0 .114.016.173.017h16.514c-3.077-6.11-9.392-10.321-16.687-10.321H23.69C13.384 19.394 5 27.779 5 38.082v7.838c0 9.778 7.55 17.812 17.124 18.612.518.043 1.037.079 1.566.079h5.837z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="iconLeft" data-v-423bf9ae="" viewBox="0 0 416 90" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(4.6332 0 0 4.6332 144.49 -1.8649)" fill="#fff" data-v-423bf9ae="">
<path d="m4.24 13.92q-0.71 0-1.39-0.35-0.68-0.34-1.16-0.9l0.69-0.6q0.85 0.98 1.95 0.98 0.64 0 1.06-0.27 0.42-0.28 0.42-0.77 0-0.31-0.15-0.55-0.14-0.25-0.46-0.45-0.31-0.2-0.56-0.31-0.24-0.12-0.69-0.28-0.53-0.21-0.86-0.38t-0.68-0.42-0.52-0.6q-0.17-0.34-0.17-0.77 0-0.82 0.67-1.32 0.68-0.5 1.73-0.5 1.47 0 2.4 1.09l-0.64 0.54q-0.8-0.77-1.79-0.77-0.66 0-1.05 0.26-0.39 0.25-0.39 0.68 0 0.21 0.1 0.39 0.11 0.19 0.23 0.31 0.13 0.11 0.41 0.26t0.45 0.21q0.16 0.06 0.53 0.2 0.56 0.21 0.86 0.36t0.71 0.43q0.42 0.28 0.6 0.66 0.19 0.39 0.19 0.91 0 0.89-0.67 1.42-0.67 0.54-1.82 0.54zm11.1-1q-0.91 1-2.4 1-1.5 0-2.4-0.99-0.91-0.99-0.91-2.75 0-1.75 0.91-2.75 0.9-1 2.4-1 1.49 0 2.4 0.98 0.9 0.99 0.9 2.75 0 1.75-0.9 2.76zm-2.4 0.11q1.07 0 1.68-0.76 0.6-0.76 0.6-2.11t-0.59-2.1-1.69-0.75q-1.12 0-1.7 0.73-0.59 0.74-0.59 2.14 0 1.36 0.59 2.11 0.59 0.74 1.7 0.74zm6.83 3.07-0.98 0.49v-10h0.98v0.65q0.42-0.39 0.87-0.6 0.44-0.21 1.13-0.21 1.44 0 2.28 1.01 0.83 1.02 0.83 2.72 0 1.77-0.85 2.76-0.85 1-2.2 1-1.29 0-2.06-0.9v3.08zm1.94-3.07q1.03 0 1.59-0.74t0.56-2.13q0-1.31-0.58-2.08-0.59-0.77-1.62-0.77-1.28 0-1.89 1.1v3.52q0.85 1.1 1.94 1.1zm9.1 0.65q-0.26 0.26-0.63 0.26-0.36 0-0.62-0.26-0.26-0.27-0.26-0.62t0.26-0.61q0.26-0.27 0.62-0.27 0.37 0 0.63 0.27 0.26 0.26 0.26 0.61t-0.26 0.62zm6.79 0.07h-0.92l-1.76-7.16h1l1.17 5.13q0.07 0.39 0.09 0.53 0.02-0.06 0.05-0.26 0.04-0.2 0.07-0.31l1.1-5.09h0.81l1.12 5.1q0.03 0.13 0.13 0.63 0.03-0.25 0.11-0.63l1.12-5.1h1.01l-1.76 7.16h-0.91l-1.11-4.87q-0.06-0.2-0.13-0.63-0.07 0.46-0.11 0.6l-1.08 4.9zm10.48 0.17q-1.7 0-1.7-1.71v-4.73h-1.69v-0.89h1.69v-2.46l0.98-0.49v2.95h2.4v0.89h-2.4v4.31q0 0.6 0.21 0.9 0.2 0.3 0.84 0.3 0.74 0 1.36-0.42l-0.11 1.02q-0.6 0.33-1.58 0.33zm9.1-9.23q-0.37 0-0.58 0.07-0.22 0.07-0.31 0.23t-0.11 0.3q-0.03 0.13-0.03 0.38v0.92h1.91v0.89h-1.91v5.39h1.91v0.88h-4.37v-0.88h1.48v-5.39h-1.48v-0.89h1.48v-1.07q0-0.93 0.53-1.33 0.52-0.41 1.38-0.41 0.74 0 1.5 0.34v0.88q-0.65-0.31-1.4-0.31z"/>
</g>
<g transform="matrix(1.4702 0 0 1.4702 -6.5121 -28.119)" fill="#fff" data-v-423bf9ae="">
<path d="M76.31 35.389H47.45c-9.202 0-16.853 6.692-18.39 15.46h10.653c1.267-3.025 4.257-5.156 7.737-5.156h28.86c4.625 0 8.389 3.76 8.389 8.385v7.838c0 4.625-3.764 8.387-8.389 8.387H47.45c-.062 0-.12-.017-.182-.018H30.764c3.077 6.111 9.392 10.322 16.687 10.322h28.86c10.306 0 18.69-8.385 18.69-18.691v-7.838C95 43.774 86.616 35.389 76.31 35.389z"/>
<path d="M29.527 64.611l.001.004H40.97l-.004-.004H52.55c9.234 0 16.904-6.739 18.404-15.553H60.315c-1.246 3.072-4.252 5.249-7.766 5.249h-9.538v.004h-19.18v-.004h-.141a8.304 8.304 0 0 1-1.917-.242c-3.7-.872-6.471-4.183-6.471-8.146v-7.838c0-4.625 3.764-8.385 8.389-8.385h28.86c.059 0 .114.016.173.017h16.514c-3.077-6.11-9.392-10.321-16.687-10.321H23.69C13.384 19.394 5 27.779 5 38.082v7.838c0 9.778 7.55 17.812 17.124 18.612.518.043 1.037.079 1.566.079h5.837z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -1,37 +1,4 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 378.303 378.303" style="enable-background:new 0 0 378.303 378.303;" xml:space="preserve">
<polygon style="fill:#7289DA;" points="378.303,28.285 350.018,0 189.151,160.867 28.285,0 0,28.285 160.867,189.151 0,350.018
28.285,378.302 189.151,217.436 350.018,378.302 378.303,350.018 217.436,189.151 "/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 378.303 378.303" version="1.1" viewBox="0 0 378.3 378.3" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<polygon points="378.3 28.285 350.02 0 189.15 160.87 28.285 0 0 28.285 160.87 189.15 0 350.02 28.285 378.3 189.15 217.44 350.02 378.3 378.3 350.02 217.44 189.15" fill="#7289DA"/>
</svg>

Before

Width:  |  Height:  |  Size: 720 B

After

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

View File

@ -260,10 +260,12 @@ img,svg {
vertical-align: middle;
}
img.center{
img.wordmark{
display: block;
margin-left: auto;
margin-right: auto;
width: 250px;
max-width: 100%;
}
table {
@ -2117,7 +2119,7 @@ progress {
background-color: #2A2A2A;
border-color: #86b7fe;
outline: 0;
box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 .25rem #212121;
}
.form-control::-webkit-date-and-time-value {
@ -2301,7 +2303,7 @@ textarea.form-control-lg {
.form-select:focus {
border-color: #86b7fe;
outline: 0;
box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 .25rem #7289DA;
}
.form-select[multiple],.form-select[size]:not([size="1"]) {
@ -2373,7 +2375,7 @@ textarea.form-control-lg {
.form-check-input:focus {
border-color: #86b7fe;
outline: 0;
box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 .25rem #7289DA;
}
.form-check-input:checked {
@ -2463,11 +2465,11 @@ textarea.form-control-lg {
}
.form-range:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 1px #fff,0 0 0 .25rem #7289DA;
}
.form-range:focus::-moz-range-thumb {
box-shadow: 0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 1px #fff,0 0 0 .25rem #7289DA;
}
.form-range::-moz-focus-outer {
@ -2891,7 +2893,7 @@ textarea.form-control-lg {
.btn-check:focus+.btn,.btn:focus {
outline: 0;
box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 .25rem #7289DA;
}
.btn:disabled,.btn.disabled,fieldset:disabled .btn {
@ -2915,7 +2917,7 @@ textarea.form-control-lg {
color: #fff;
background-color: #0b5ed7;
border-color: #0a58ca;
box-shadow: 0 0 0 .25rem rgba(49,132,253,.5);
box-shadow: 0 0 0 .25rem #7289DA;
}
.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle {
@ -2925,7 +2927,7 @@ textarea.form-control-lg {
}
.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus {
box-shadow: 0 0 0 .25rem rgba(49,132,253,.5);
box-shadow: 0 0 0 .25rem #7289DA;
}
.btn-primary:disabled,.btn-primary.disabled {
@ -3191,7 +3193,7 @@ textarea.form-control-lg {
}
.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus {
box-shadow: 0 0 0 .25rem rgba(13,110,253,.5);
box-shadow: 0 0 0 .25rem #7289DA;
}
.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show {
@ -3201,7 +3203,7 @@ textarea.form-control-lg {
}
.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus {
box-shadow: 0 0 0 .25rem rgba(13,110,253,.5);
box-shadow: 0 0 0 .25rem #7289DA;
}
.btn-outline-primary:disabled,.btn-outline-primary.disabled {
@ -4432,7 +4434,10 @@ textarea.form-control-lg {
padding: 1rem;
background-color: #121212;
}
.card-body.px-md-5{
border-radius: 50px;
}
.card-title {
margin-bottom: .5rem;
}
@ -4617,7 +4622,7 @@ textarea.form-control-lg {
z-index: 3;
border-color: #86b7fe;
outline: 0;
box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 .25rem #7289DA;
}
.accordion-header {
@ -4741,7 +4746,7 @@ textarea.form-control-lg {
color: #0a58ca;
background-color: #e9ecef;
outline: 0;
box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 .25rem #7289DA;
}
.page-item:not(:first-child) .page-link {
@ -5400,7 +5405,7 @@ textarea.form-control-lg {
.btn-close:focus {
outline: 0;
box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
box-shadow: 0 0 0 .25rem #7289DA;
opacity: 1;
}
@ -12063,4 +12068,5 @@ input.form-control.form-control-sm.text-uppercase {
div.mt-2.card.card-body {
border-color: #2A2A2A;
}
}

18
frontend/package-lock.json generated Normal file
View File

@ -0,0 +1,18 @@
{
"name": "sleeky-frontend",
"version": "2.5.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"bootstrap": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ=="
},
"popper.js": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
}
}
}

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="accept.svg"
id="svg6"
version="1.1"
width="24"
viewBox="0 0 24 24"
height="24">
height="24"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
pagecolor="#ffffff"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
id="path2"
fill="none"
d="M0 0h24v24H0z" />
d="M 0,0 H 24 V 24 H 0 Z" />
<path
style="fill:#4393bb;fill-opacity:1"
style="fill:#7289da;fill-opacity:1"
id="path4"
d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z" />
d="M 9,16.2 4.8,12 3.4,13.4 9,19 21,7 19.6,5.6 Z" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="asc.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
d="M 12,8 6,14 7.41,15.41 12,10.83 16.59,15.41 18,14 Z"
id="path2"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
<path
d="M0 0h24v24H0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="bg.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M0 0h24v24H0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path2" />
<path
d="M12 5.83L15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z"
d="M 12,5.83 15.17,9 16.58,7.59 12,3 7.41,7.59 8.83,9 Z M 12,18.17 8.83,15 7.42,16.41 12,21 16.59,16.41 15.17,15 Z"
id="path4"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="cancel.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"
d="M 12,2 C 6.47,2 2,6.47 2,12 2,17.53 6.47,22 12,22 17.53,22 22,17.53 22,12 22,6.47 17.53,2 12,2 Z M 17,15.59 15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 Z"
id="path2"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
<path
d="M0 0h24v24H0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="chart_bar.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z"
d="M 5,9.2 H 8 V 19 H 5 Z M 10.6,5 h 2.8 v 14 h -2.8 z m 5.6,8 H 19 v 6 h -2.8 z"
id="path2"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
<path
d="M0 0h24v24H0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="chart_bar_add.svg"
id="svg6"
version="1.1"
width="24"
viewBox="0 0 24 24"
height="24">
height="24"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,21 +47,24 @@
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
pagecolor="#ffffff"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
style="fill:#4393bb;fill-opacity:1"
style="fill:#7289da;fill-opacity:1"
id="path2"
d="M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z" />
d="M 5,9.2 H 8 V 19 H 5 Z M 10.6,5 h 2.8 v 14 h -2.8 z m 5.6,8 H 19 v 6 h -2.8 z" />
<path
id="path4"
fill="none"
d="M0 0h24v24H0z" />
d="M 0,0 H 24 V 24 H 0 Z" />
<circle
r="2.6246843"
cy="18.085155"
cx="14.813288"
id="path831"
style="fill:#ff00a5;stroke-width:3.77953;stroke-linecap:square;paint-order:markers fill stroke" />
style="fill:#4e5d94;fill-opacity:1;stroke-width:3.77953;stroke-linecap:square;paint-order:markers fill stroke" />
<g
transform="translate(0.01867423,-0.02564251)"
style="font-style:normal;font-weight:normal;font-size:7.56178px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.756178"

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="copy.svg"
id="svg6"
version="1.1"
width="35"
viewBox="0 0 35 16"
height="16">
height="16"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -50,18 +49,17 @@
bordercolor="#666666"
pagecolor="#ffffff"
showguides="true"
inkscape:guide-bbox="true" />
inkscape:guide-bbox="true"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
style="fill:#8dbdd8;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
d="M 0,8 14.084746,0 H 35 V 16 H 14.084746 Z"
style="fill:#7289da;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 0,8.3515411 14.084746,0.35154108 H 35 V 16.351541 H 14.084746 Z"
id="path849" />
<path
id="path4"
fill="none"
d="M 0,0 H 24 V 24 H 0 Z" />
<g
aria-label="COPY"
transform="scale(0.65687347,1.5223632)"
transform="matrix(0.65687347,0,0,1.5223632,0,0.35154108)"
id="text853"
style="font-style:normal;font-weight:normal;font-size:14.4876px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.482922">
<path
@ -73,7 +71,7 @@
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.4876px;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.482922"
id="path857" />
<path
d="m 42.098682,3.3131678 q 0,0.7074024 -0.247591,1.3865086 Q 41.6035,5.3717087 41.143689,5.8315202 40.5141,6.4540343 39.735958,6.7723654 38.964889,7.0906964 37.811823,7.0906964 H 36.121132 V 10.521598 H 33.404707 V -0.01162327 h 4.470783 q 1.004511,0 1.690691,0.17685059 0.693255,0.16977656 1.223806,0.51640372 0.636662,0.41736736 0.969142,1.06817756 0.339553,0.6508102 0.339553,1.5633592 z m -2.808388,0.063666 q 0,-0.4456635 -0.240516,-0.7639945 Q 38.809261,2.2874344 38.49093,2.160102 38.066488,1.9903254 37.663269,1.9761774 37.26005,1.9549553 36.588017,1.9549553 h -0.466885 v 3.1550145 h 0.778142 q 0.693255,0 1.138918,-0.084888 0.452738,-0.084888 0.756921,-0.3395531 0.261739,-0.2263688 0.374923,-0.5376258 0.120258,-0.3183311 0.120258,-0.7710686 z"
d="m 42.098682,3.3131678 q 0,0.7074024 -0.247591,1.3865086 Q 41.6035,5.3717087 41.143689,5.8315202 40.5141,6.4540343 39.735958,6.7723654 38.964889,7.0906964 37.811823,7.0906964 H 36.121132 V 10.521598 H 33.404707 V -0.01162327 h 4.470783 q 1.004511,0 1.690691,0.17685059 0.693255,0.16977656 1.223806,0.51640372 0.636662,0.41736736 0.969142,1.06817756 0.339553,0.6508102 0.339553,1.5633592 z m -2.808388,0.063666 q 0,-0.4456635 -0.240516,-0.7639945 Q 38.809261,2.2874344 38.49093,2.160102 38.066488,1.9903254 37.663269,1.9761774 37.26005,1.9549553 36.588017,1.9549553 h -0.466885 v 3.1550145 h 0.778142 q 0.693255,0 1.138918,-0.084888 0.452738,-0.084888 0.756921,-0.3395531 0.261739,-0.2263688 0.374923,-0.5376258 0.120258,-0.3183311 0.120258,-0.7710691 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.4876px;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.482922"
id="path859" />
<path

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="delete.svg"
id="svg6"
version="1.1"
width="16"
viewBox="0 0 16 16"
height="16">
height="16"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,9 +47,12 @@
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
pagecolor="#ffffff"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
style="fill:#4393bb;fill-opacity:1;stroke-width:0.888889"
style="fill:#7289da;fill-opacity:1;stroke-width:0.888889"
id="path2"
d="M 2.6666669,14.222222 C 2.6666669,15.2 3.4666669,16 4.4444447,16 h 7.1111113 c 0.977778,0 1.777778,-0.8 1.777778,-1.777778 V 3.5555556 H 2.6666669 Z M 14.222222,0.8888889 H 11.111111 L 10.222222,0 H 5.777778 L 4.8888891,0.8888889 H 1.777778 v 1.7777778 h 12.444444 z" />
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="desc.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"
d="M 7.41,8.59 12,13.17 16.59,8.59 18,10 12,16 6,10 Z"
id="path2"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
<path
d="M0 0h24v24H0V0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="error.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M0 0h24v24H0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path2" />
<path
d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"
d="M 1,21 H 23 L 12,2 Z m 12,-3 h -2 v -2 h 2 z m 0,-4 h -2 v -4 h 2 z"
id="path4"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,24 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
viewBox="0 0 131072 262144"
xml:space="preserve"
sodipodi:docname="facebook.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"><metadata
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
width="131072"
height="262144"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata43"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs41" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@ -39,62 +40,81 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<g
id="g6"
style="fill:#4393bb;fill-opacity:1">
style="fill:#7289da;fill-opacity:1"
transform="translate(-65536)">
<g
id="g4"
style="fill:#4393bb;fill-opacity:1">
style="fill:#7289da;fill-opacity:1">
<path
d="M288,176v-64c0-17.664,14.336-32,32-32h32V0h-64c-53.024,0-96,42.976-96,96v80h-64v80h64v256h96V256h64l32-80H288z"
d="m 288,176 v -64 c 0,-17.664 14.336,-32 32,-32 h 32 V 0 h -64 c -53.024,0 -96,42.976 -96,96 v 80 h -64 v 80 h 64 v 256 h 96 V 256 h 64 l 32,-80 z"
id="path2"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
</g>
</g>
<g
id="g8">
id="g8"
transform="translate(-65536)">
</g>
<g
id="g10">
id="g10"
transform="translate(-65536)">
</g>
<g
id="g12">
id="g12"
transform="translate(-65536)">
</g>
<g
id="g14">
id="g14"
transform="translate(-65536)">
</g>
<g
id="g16">
id="g16"
transform="translate(-65536)">
</g>
<g
id="g18">
id="g18"
transform="translate(-65536)">
</g>
<g
id="g20">
id="g20"
transform="translate(-65536)">
</g>
<g
id="g22">
id="g22"
transform="translate(-65536)">
</g>
<g
id="g24">
id="g24"
transform="translate(-65536)">
</g>
<g
id="g26">
id="g26"
transform="translate(-65536)">
</g>
<g
id="g28">
id="g28"
transform="translate(-65536)">
</g>
<g
id="g30">
id="g30"
transform="translate(-65536)">
</g>
<g
id="g32">
id="g32"
transform="translate(-65536)">
</g>
<g
id="g34">
id="g34"
transform="translate(-65536)">
</g>
<g
id="g36">
id="g36"
transform="translate(-65536)">
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,12 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 24 24"
height="16"
viewBox="0 0 16 16"
@ -14,7 +7,14 @@
version="1.1"
id="svg10"
sodipodi:docname="filter.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata16">
<rdf:RDF>
@ -23,7 +23,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -49,7 +48,10 @@
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g8" />
inkscape:current-layer="g8"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<g
id="g8">
<path
@ -59,7 +61,7 @@
<path
d="M 0.255,1.61 C 2.275,4.2 6.005,9 6.005,9 v 6 c 0,0.55 0.45,1 1,1 h 2 c 0.55,0 1,-0.45 1,-1 V 9 c 0,0 3.72,-4.8 5.74,-7.39 C 16.255,0.95 15.785,0 14.955,0 H 1.045 c -0.83,0 -1.3,0.95 -0.79,1.61 z"
id="path4"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="pencil.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +22,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +47,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"
d="M 3,17.25 V 21 H 6.75 L 17.81,9.94 14.06,6.19 Z M 20.71,7.04 c 0.39,-0.39 0.39,-1.02 0,-1.41 L 18.37,3.29 C 17.98,2.9 17.35,2.9 16.96,3.29 l -1.83,1.83 3.75,3.75 z"
id="path2"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
<path
d="M0 0h24v24H0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,19 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="share.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
inkscape:export-filename="share.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
@ -22,7 +25,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -48,13 +50,16 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M0 0h24v24H0z"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path2" />
<path
d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"
d="m 18,16.08 c -0.76,0 -1.44,0.3 -1.96,0.77 L 8.91,12.7 C 8.96,12.47 9,12.24 9,12 9,11.76 8.96,11.53 8.91,11.3 L 15.96,7.19 C 16.5,7.69 17.21,8 18,8 19.66,8 21,6.66 21,5 21,3.34 19.66,2 18,2 c -1.66,0 -3,1.34 -3,3 0,0.24 0.04,0.47 0.09,0.7 L 8.04,9.81 C 7.5,9.31 6.79,9 6,9 4.34,9 3,10.34 3,12 c 0,1.66 1.34,3 3,3 0.79,0 1.5,-0.31 2.04,-0.81 l 7.12,4.16 c -0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92 0,-1.61 -1.31,-2.92 -2.92,-2.92 z"
id="path4"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,24 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
viewBox="0 0 262144 262144"
xml:space="preserve"
sodipodi:docname="twitter.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"><metadata
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
width="262144"
height="262144"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata43"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs41" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@ -39,62 +40,41 @@
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1"
inkscape:document-rotation="0" />
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<g
id="g6"
style="fill:#4393bb;fill-opacity:1">
style="fill:#7289da;fill-opacity:1">
<g
id="g4"
style="fill:#4393bb;fill-opacity:1">
style="fill:#7289da;fill-opacity:1">
<path
d="M512,97.248c-19.04,8.352-39.328,13.888-60.48,16.576c21.76-12.992,38.368-33.408,46.176-58.016 c-20.288,12.096-42.688,20.64-66.56,25.408C411.872,60.704,384.416,48,354.464,48c-58.112,0-104.896,47.168-104.896,104.992 c0,8.32,0.704,16.32,2.432,23.936c-87.264-4.256-164.48-46.08-216.352-109.792c-9.056,15.712-14.368,33.696-14.368,53.056 c0,36.352,18.72,68.576,46.624,87.232c-16.864-0.32-33.408-5.216-47.424-12.928c0,0.32,0,0.736,0,1.152 c0,51.008,36.384,93.376,84.096,103.136c-8.544,2.336-17.856,3.456-27.52,3.456c-6.72,0-13.504-0.384-19.872-1.792 c13.6,41.568,52.192,72.128,98.08,73.12c-35.712,27.936-81.056,44.768-130.144,44.768c-8.608,0-16.864-0.384-25.12-1.44 C46.496,446.88,101.6,464,161.024,464c193.152,0,298.752-160,298.752-298.688c0-4.64-0.16-9.12-0.384-13.568 C480.224,136.96,497.728,118.496,512,97.248z"
d="m 512,97.248 c -19.04,8.352 -39.328,13.888 -60.48,16.576 21.76,-12.992 38.368,-33.408 46.176,-58.016 -20.288,12.096 -42.688,20.64 -66.56,25.408 C 411.872,60.704 384.416,48 354.464,48 296.352,48 249.568,95.168 249.568,152.992 c 0,8.32 0.704,16.32 2.432,23.936 C 164.736,172.672 87.52,130.848 35.648,67.136 26.592,82.848 21.28,100.832 21.28,120.192 c 0,36.352 18.72,68.576 46.624,87.232 -16.864,-0.32 -33.408,-5.216 -47.424,-12.928 0,0.32 0,0.736 0,1.152 0,51.008 36.384,93.376 84.096,103.136 -8.544,2.336 -17.856,3.456 -27.52,3.456 -6.72,0 -13.504,-0.384 -19.872,-1.792 13.6,41.568 52.192,72.128 98.08,73.12 -35.712,27.936 -81.056,44.768 -130.144,44.768 -8.608,0 -16.864,-0.384 -25.12,-1.44 C 46.496,446.88 101.6,464 161.024,464 c 193.152,0 298.752,-160 298.752,-298.688 0,-4.64 -0.16,-9.12 -0.384,-13.568 C 480.224,136.96 497.728,118.496 512,97.248 Z"
id="path2"
style="fill:#4393bb;fill-opacity:1" />
style="fill:#7289da;fill-opacity:1" />
</g>
</g>
<g
id="g8">
</g>
<g
id="g10">
</g>
<g
id="g12">
</g>
<g
id="g14">
</g>
<g
id="g16">
</g>
<g
id="g18">
</g>
<g
id="g20">
</g>
<g
id="g22">
</g>
<g
id="g24">
</g>
<g
id="g26">
</g>
<g
id="g28">
</g>
<g
id="g30">
</g>
<g
id="g32">
</g>
<g
id="g34">
</g>
<g
id="g36">
</g>
</svg>
style="fill:#ff0000;fill-opacity:1"
id="g1956"
transform="matrix(0.86810312,0,0,0.86815918,51.999458,48.388091)"><path
d="M 285.08,230.397 456.218,59.27 c 6.076,-6.077 6.076,-15.911 0,-21.986 L 423.511,4.565 c -2.913,-2.911 -6.866,-4.55 -10.992,-4.55 -4.127,0 -8.08,1.639 -10.993,4.55 L 230.388,175.705 59.25,4.565 c -2.913,-2.911 -6.866,-4.55 -10.993,-4.55 -4.126,0 -8.08,1.639 -10.992,4.55 L 4.558,37.284 c -6.077,6.075 -6.077,15.909 0,21.986 L 175.696,230.398 4.575,401.505 c -6.074,6.077 -6.074,15.911 0,21.986 l 32.709,32.719 c 2.911,2.911 6.865,4.55 10.992,4.55 4.127,0 8.08,-1.639 10.994,-4.55 L 230.387,285.09 401.505,456.21 c 2.913,2.911 6.866,4.55 10.993,4.55 4.128,0 8.081,-1.639 10.992,-4.55 l 32.709,-32.719 c 6.074,-6.075 6.074,-15.909 0,-21.986 z"
id="path1948"
style="fill:#ff0000;fill-opacity:1" /></g></svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,3 +0,0 @@
<?php
header("HTTP/1.0 403 Not Found");
?>

View File

@ -1,3 +0,0 @@
<?php
header("HTTP/1.0 403 Not Found");
?>

View File

@ -1,3 +0,0 @@
<?php
header("HTTP/1.0 403 Not Found");
?>

View File

@ -1,3 +0,0 @@
<?php
header("HTTP/1.0 403 Not Found");
?>

View File

@ -1,3 +0,0 @@
<?php
header("HTTP/1.0 403 Not Found");
?>

View File

@ -1,5 +0,0 @@
parameters:
level: 8
paths:
- src
- tests

View File

@ -1,3 +0,0 @@
<?php
header("HTTP/1.0 403 Not Found");
?>

View File

@ -1,55 +0,0 @@
Openwall Phpass, modernized
===========================
[![Build Status](https://secure.travis-ci.org/ozh/phpass.png?branch=master)](http://travis-ci.org/ozh/phpass)
This is Openwall's [Phpass](http://openwall.com/phpass/), based on the 0.5 release, but modernized slightly:
- Namespaced
- Composer support (Autoloading)
- Unit Tested
The modernization has been done by Hautelook, from whom I stole this library to originally repackage it for PHP 5.3 to 7.0 compatibility in a single file and branch (Hautelook's port consisting of two branches, one for PHP 5.3 to 5.5, and another one for 5.6+).
Current version requires PHP 5.6+
## Installation ##
Add this requirement to your `composer.json` file and run `composer install`:
{
"require": {
"ozh/phpass": "1.3.0"
}
}
## Usage ##
The following example shows how to hash a password (to then store the hash in the database), and how to check whether a provided password is correct (hashes to the same value):
``` php
<?php
namespace Your\Namespace;
use Ozh\Phpass\PasswordHash;
require_once(__DIR__ . "/vendor/autoload.php"); // or require_once('path/to/src/Ozh/Phpass/PasswordHash.php');
$passwordHasher = new PasswordHash(8,false);
// Encrypt
$password = $passwordHasher->HashPassword('secret');
var_dump($password);
// Will output something like:
// '$2a$08$a6XFLs8SrjClF1szoDDkI.6gtWVb4//QnzUjkxlus83AKCNjuD8Ha' (length=60)
// '$2a$08$Qze1smZ//VAwHJ1t52zklOY/yLwlbKR6Ighf6B7uqGXdYVozTPEdG' (length=60)
// '$2a$08$u2uKfE9igO.Cz0SptWxlXeVi0CQglfl3FdRK3YpbGm1NfF1d.CFPm' (length=60)
// Decrypt
var_dump( $passwordHasher->CheckPassword('secret', '$2a$08$0RK6Yw6j9kSIXrrEOc3dwuDPQuT78HgR0S3/ghOFDEpOGpOkARoSu') );
// true
var_dump( $passwordHasher->CheckPassword('secret', '$2a$08$Qze1smZ//VAwHJ1t52zklOY/yLwlbKR6Ighf6B7uqGXdYVozTPEdG') );
// true
var_dump( $passwordHasher->CheckPassword('secret', '$2a$08$u2uKfE9igO.Cz0SptWxlXeVi0CQglfl3FdRK3YpbGm1NfF1d.CFPm') );
// true

View File

@ -1,333 +0,0 @@
<?php
namespace Ozh\Phpass;
/**
*
* Portable PHP password hashing framework.
*
* Originally written by Solar Designer <solar at openwall.com> in 2004-2006
*
* Modernized by Hautelook at https://github.com/hautelook/phpass
*
* Slightly repacked by Ozh to extend compatibility from PHP 5.3 to 7+ in a single file
*
* There's absolutely no warranty.
*
* The homepage URL for this framework is:
*
* http://www.openwall.com/phpass/
*
* Please be sure to update the Version line if you edit this file in any way.
* It is suggested that you leave the main version number intact, but indicate
* your project name (after the slash) and add your own revision information.
*
* Please do not change the "private" password hashing method implemented in
* here, thereby making your hashes incompatible. However, if you must, please
* change the hash type identifier (the "$P$") to something different.
*
* Obviously, since this code is in the public domain, the above are not
* requirements (there can be none), but merely suggestions.
*
* @author Solar Designer <solar@openwall.com>
*/
class PasswordHash
{
private $itoa64;
private $iteration_count_log2;
private $portable_hashes;
private $random_state;
/**
* Constructor
*
* @param int $iteration_count_log2
* @param boolean $portable_hashes
*/
public function __construct($iteration_count_log2, $portable_hashes)
{
$this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31) {
$iteration_count_log2 = 8;
}
$this->iteration_count_log2 = $iteration_count_log2;
$this->portable_hashes = $portable_hashes;
$this->random_state = microtime();
if (function_exists('getmypid')) {
$this->random_state .= getmypid();
}
}
/**
* @param int $count
* @return String
*/
public function get_random_bytes($count)
{
$output = '';
// PHP 7+
if (is_callable('random_bytes')) {
return random_bytes($count);
}
if (@is_readable('/dev/urandom') &&
($fh = @fopen('/dev/urandom', 'rb'))) {
$output = fread($fh, $count);
fclose($fh);
}
if (strlen($output) < $count) {
$output = '';
for ($i = 0; $i < $count; $i += 16) {
$this->random_state =
md5(microtime() . $this->random_state);
$output .= md5($this->random_state, TRUE);
}
$output = substr($output, 0, $count);
}
return $output;
}
/**
* @param String $input
* @param int $count
* @return String
*/
public function encode64($input, $count)
{
$output = '';
$i = 0;
do {
$value = ord($input[$i++]);
$output .= $this->itoa64[$value & 0x3f];
if ($i < $count) {
$value |= ord($input[$i]) << 8;
}
$output .= $this->itoa64[($value >> 6) & 0x3f];
if ($i++ >= $count) {
break;
}
if ($i < $count) {
$value |= ord($input[$i]) << 16;
}
$output .= $this->itoa64[($value >> 12) & 0x3f];
if ($i++ >= $count) {
break;
}
$output .= $this->itoa64[($value >> 18) & 0x3f];
} while ($i < $count);
return $output;
}
/**
* @param String $input
* @return String
*/
public function gensalt_private($input)
{
$output = '$P$';
$output .= $this->itoa64[min($this->iteration_count_log2 +
((PHP_VERSION >= '5') ? 5 : 3), 30)];
$output .= $this->encode64($input, 6);
return $output;
}
/**
* @param String $password
* @param String $setting
* @return String
*/
public function crypt_private($password, $setting)
{
$output = '*0';
if (substr($setting, 0, 2) === $output) {
$output = '*1';
}
$id = substr($setting, 0, 3);
# We use "$P$", phpBB3 uses "$H$" for the same thing
if ($id !== '$P$' && $id !== '$H$') {
return $output;
}
$count_log2 = strpos($this->itoa64, $setting[3]);
if ($count_log2 < 7 || $count_log2 > 30) {
return $output;
}
$count = 1 << $count_log2;
$salt = substr($setting, 4, 8);
if (strlen($salt) != 8) {
return $output;
}
// We're kind of forced to use MD5 here since it's the only
// cryptographic primitive available in all versions of PHP
// currently in use. To implement our own low-level crypto
// in PHP would result in much worse performance and
// consequently in lower iteration counts and hashes that are
// quicker to crack (by non-PHP code).
$hash = md5($salt . $password, TRUE);
do {
$hash = md5($hash . $password, TRUE);
} while (--$count);
$output = substr($setting, 0, 12);
$output .= $this->encode64($hash, 16);
return $output;
}
/**
* @param String $input
* @return String
*/
public function gensalt_blowfish($input)
{
// This one needs to use a different order of characters and a
// different encoding scheme from the one in encode64() above.
// We care because the last character in our encoded string will
// only represent 2 bits. While two known implementations of
// bcrypt will happily accept and correct a salt string which
// has the 4 unused bits set to non-zero, we do not want to take
// chances and we also do not want to waste an additional byte
// of entropy.
$itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$output = '$2a$';
$output .= chr(ord('0') + $this->iteration_count_log2 / 10);
$output .= chr(ord('0') + $this->iteration_count_log2 % 10);
$output .= '$';
$i = 0;
do {
$c1 = ord($input[$i++]);
$output .= $itoa64[$c1 >> 2];
$c1 = ($c1 & 0x03) << 4;
if ($i >= 16) {
$output .= $itoa64[$c1];
break;
}
$c2 = ord($input[$i++]);
$c1 |= $c2 >> 4;
$output .= $itoa64[$c1];
$c1 = ($c2 & 0x0f) << 2;
$c2 = ord($input[$i++]);
$c1 |= $c2 >> 6;
$output .= $itoa64[$c1];
$output .= $itoa64[$c2 & 0x3f];
} while (1);
return $output;
}
/**
* @param String $password
*/
public function HashPassword($password)
{
$random = '';
if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
$random = $this->get_random_bytes(16);
$hash =
crypt($password, $this->gensalt_blowfish($random));
if (strlen($hash) == 60) {
return $hash;
}
}
if (strlen($random) < 6) {
$random = $this->get_random_bytes(6);
}
$hash =
$this->crypt_private($password,
$this->gensalt_private($random));
if (strlen($hash) == 34) {
return $hash;
}
// Returning '*' on error is safe here, but would _not_ be safe
// in a crypt(3)-like function used _both_ for generating new
// hashes and for validating passwords against existing hashes.
return '*';
}
/**
* @param String $password
* @param String $stored_hash
* @return boolean
*/
public function CheckPassword($password, $stored_hash)
{
$hash = $this->crypt_private($password, $stored_hash);
if ($hash[0] == '*') {
$hash = crypt($password, $stored_hash);
}
return hash_equals($stored_hash, $hash);
}
}
/**
* hash_equals compatibility function
*
* @package CodeIgniter
* @author EllisLab Dev Team
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
* @copyright Copyright (c) 2014 - 2017, British Columbia Institute of Technology (http://bcit.ca/)
* @license http://opensource.org/licenses/MIT MIT License
* @link https://codeigniter.com
*
* Source: https://github.com/bcit-ci/CodeIgniter/blob/3.1.4/system/core/compat/hash.php
* For PHP < 5.6
*/
// @codeCoverageIgnoreStart
if ( ! function_exists('hash_equals'))
{
/**
* hash_equals()
*
* @link http://php.net/hash_equals
* @param string $known_string
* @param string $user_string
* @return bool
*/
function hash_equals($known_string, $user_string)
{
if ( ! is_string($known_string))
{
trigger_error('hash_equals(): Expected known_string to be a string, '.strtolower(gettype($known_string)).' given', E_USER_WARNING);
return FALSE;
}
elseif ( ! is_string($user_string))
{
trigger_error('hash_equals(): Expected user_string to be a string, '.strtolower(gettype($user_string)).' given', E_USER_WARNING);
return FALSE;
}
elseif (($length = strlen($known_string)) !== strlen($user_string))
{
return FALSE;
}
$diff = 0;
for ($i = 0; $i < $length; $i++)
{
$diff |= ord($known_string[$i]) ^ ord($user_string[$i]);
}
return ($diff === 0);
}
}
// @codeCoverageIgnoreEnd

View File

@ -1 +0,0 @@
338e2-5db52cb225723

View File

@ -1 +0,0 @@
4d-5db52cb22b4e4

View File

@ -1,33 +0,0 @@
<?php
/**
* Authentication provider interface
*
* @package Requests
* @subpackage Authentication
*/
/**
* Authentication provider interface
*
* Implement this interface to act as an authentication provider.
*
* Parameters should be passed via the constructor where possible, as this
* makes it much easier for users to use your provider.
*
* @see Requests_Hooks
* @package Requests
* @subpackage Authentication
*/
interface Requests_Auth {
/**
* Register hooks as needed
*
* This method is called in {@see Requests::request} when the user has set
* an instance as the 'auth' option. Use this callback to register all the
* hooks you'll need.
*
* @see Requests_Hooks::register
* @param Requests_Hooks $hooks Hook system
*/
public function register(Requests_Hooks &$hooks);
}

View File

@ -1,88 +0,0 @@
<?php
/**
* Basic Authentication provider
*
* @package Requests
* @subpackage Authentication
*/
/**
* Basic Authentication provider
*
* Provides a handler for Basic HTTP authentication via the Authorization
* header.
*
* @package Requests
* @subpackage Authentication
*/
class Requests_Auth_Basic implements Requests_Auth {
/**
* Username
*
* @var string
*/
public $user;
/**
* Password
*
* @var string
*/
public $pass;
/**
* Constructor
*
* @throws Requests_Exception On incorrect number of arguments (`authbasicbadargs`)
* @param array|null $args Array of user and password. Must have exactly two elements
*/
public function __construct($args = null) {
if (is_array($args)) {
if (count($args) !== 2) {
throw new Requests_Exception('Invalid number of arguments', 'authbasicbadargs');
}
list($this->user, $this->pass) = $args;
}
}
/**
* Register the necessary callbacks
*
* @see curl_before_send
* @see fsockopen_header
* @param Requests_Hooks $hooks Hook system
*/
public function register(Requests_Hooks &$hooks) {
$hooks->register('curl.before_send', array(&$this, 'curl_before_send'));
$hooks->register('fsockopen.after_headers', array(&$this, 'fsockopen_header'));
}
/**
* Set cURL parameters before the data is sent
*
* @param resource $handle cURL resource
*/
public function curl_before_send(&$handle) {
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($handle, CURLOPT_USERPWD, $this->getAuthString());
}
/**
* Add extra headers to the request before sending
*
* @param string $out HTTP header string
*/
public function fsockopen_header(&$out) {
$out .= sprintf("Authorization: Basic %s\r\n", base64_encode($this->getAuthString()));
}
/**
* Get the authentication string (user:pass)
*
* @return string
*/
public function getAuthString() {
return $this->user . ':' . $this->pass;
}
}

View File

@ -1,500 +0,0 @@
<?php
/**
* Cookie storage object
*
* @package Requests
* @subpackage Cookies
*/
/**
* Cookie storage object
*
* @package Requests
* @subpackage Cookies
*/
class Requests_Cookie {
/**
* Cookie name.
*
* @var string
*/
public $name;
/**
* Cookie value.
*
* @var string
*/
public $value;
/**
* Cookie attributes
*
* Valid keys are (currently) path, domain, expires, max-age, secure and
* httponly.
*
* @var Requests_Utility_CaseInsensitiveDictionary|array Array-like object
*/
public $attributes = array();
/**
* Cookie flags
*
* Valid keys are (currently) creation, last-access, persistent and
* host-only.
*
* @var array
*/
public $flags = array();
/**
* Reference time for relative calculations
*
* This is used in place of `time()` when calculating Max-Age expiration and
* checking time validity.
*
* @var int
*/
public $reference_time = 0;
/**
* Create a new cookie object
*
* @param string $name
* @param string $value
* @param array|Requests_Utility_CaseInsensitiveDictionary $attributes Associative array of attribute data
*/
public function __construct($name, $value, $attributes = array(), $flags = array(), $reference_time = null) {
$this->name = $name;
$this->value = $value;
$this->attributes = $attributes;
$default_flags = array(
'creation' => time(),
'last-access' => time(),
'persistent' => false,
'host-only' => true,
);
$this->flags = array_merge($default_flags, $flags);
$this->reference_time = time();
if ($reference_time !== null) {
$this->reference_time = $reference_time;
}
$this->normalize();
}
/**
* Check if a cookie is expired.
*
* Checks the age against $this->reference_time to determine if the cookie
* is expired.
*
* @return boolean True if expired, false if time is valid.
*/
public function is_expired() {
// RFC6265, s. 4.1.2.2:
// If a cookie has both the Max-Age and the Expires attribute, the Max-
// Age attribute has precedence and controls the expiration date of the
// cookie.
if (isset($this->attributes['max-age'])) {
$max_age = $this->attributes['max-age'];
return $max_age < $this->reference_time;
}
if (isset($this->attributes['expires'])) {
$expires = $this->attributes['expires'];
return $expires < $this->reference_time;
}
return false;
}
/**
* Check if a cookie is valid for a given URI
*
* @param Requests_IRI $uri URI to check
* @return boolean Whether the cookie is valid for the given URI
*/
public function uri_matches(Requests_IRI $uri) {
if (!$this->domain_matches($uri->host)) {
return false;
}
if (!$this->path_matches($uri->path)) {
return false;
}
return empty($this->attributes['secure']) || $uri->scheme === 'https';
}
/**
* Check if a cookie is valid for a given domain
*
* @param string $string Domain to check
* @return boolean Whether the cookie is valid for the given domain
*/
public function domain_matches($string) {
if (!isset($this->attributes['domain'])) {
// Cookies created manually; cookies created by Requests will set
// the domain to the requested domain
return true;
}
$domain_string = $this->attributes['domain'];
if ($domain_string === $string) {
// The domain string and the string are identical.
return true;
}
// If the cookie is marked as host-only and we don't have an exact
// match, reject the cookie
if ($this->flags['host-only'] === true) {
return false;
}
if (strlen($string) <= strlen($domain_string)) {
// For obvious reasons, the string cannot be a suffix if the domain
// is shorter than the domain string
return false;
}
if (substr($string, -1 * strlen($domain_string)) !== $domain_string) {
// The domain string should be a suffix of the string.
return false;
}
$prefix = substr($string, 0, strlen($string) - strlen($domain_string));
if (substr($prefix, -1) !== '.') {
// The last character of the string that is not included in the
// domain string should be a %x2E (".") character.
return false;
}
// The string should be a host name (i.e., not an IP address).
return !preg_match('#^(.+\.)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $string);
}
/**
* Check if a cookie is valid for a given path
*
* From the path-match check in RFC 6265 section 5.1.4
*
* @param string $request_path Path to check
* @return boolean Whether the cookie is valid for the given path
*/
public function path_matches($request_path) {
if (empty($request_path)) {
// Normalize empty path to root
$request_path = '/';
}
if (!isset($this->attributes['path'])) {
// Cookies created manually; cookies created by Requests will set
// the path to the requested path
return true;
}
$cookie_path = $this->attributes['path'];
if ($cookie_path === $request_path) {
// The cookie-path and the request-path are identical.
return true;
}
if (strlen($request_path) > strlen($cookie_path) && substr($request_path, 0, strlen($cookie_path)) === $cookie_path) {
if (substr($cookie_path, -1) === '/') {
// The cookie-path is a prefix of the request-path, and the last
// character of the cookie-path is %x2F ("/").
return true;
}
if (substr($request_path, strlen($cookie_path), 1) === '/') {
// The cookie-path is a prefix of the request-path, and the
// first character of the request-path that is not included in
// the cookie-path is a %x2F ("/") character.
return true;
}
}
return false;
}
/**
* Normalize cookie and attributes
*
* @return boolean Whether the cookie was successfully normalized
*/
public function normalize() {
foreach ($this->attributes as $key => $value) {
$orig_value = $value;
$value = $this->normalize_attribute($key, $value);
if ($value === null) {
unset($this->attributes[$key]);
continue;
}
if ($value !== $orig_value) {
$this->attributes[$key] = $value;
}
}
return true;
}
/**
* Parse an individual cookie attribute
*
* Handles parsing individual attributes from the cookie values.
*
* @param string $name Attribute name
* @param string|boolean $value Attribute value (string value, or true if empty/flag)
* @return mixed Value if available, or null if the attribute value is invalid (and should be skipped)
*/
protected function normalize_attribute($name, $value) {
switch (strtolower($name)) {
case 'expires':
// Expiration parsing, as per RFC 6265 section 5.2.1
if (is_int($value)) {
return $value;
}
$expiry_time = strtotime($value);
if ($expiry_time === false) {
return null;
}
return $expiry_time;
case 'max-age':
// Expiration parsing, as per RFC 6265 section 5.2.2
if (is_int($value)) {
return $value;
}
// Check that we have a valid age
if (!preg_match('/^-?\d+$/', $value)) {
return null;
}
$delta_seconds = (int) $value;
if ($delta_seconds <= 0) {
$expiry_time = 0;
}
else {
$expiry_time = $this->reference_time + $delta_seconds;
}
return $expiry_time;
case 'domain':
// Domain normalization, as per RFC 6265 section 5.2.3
if ($value[0] === '.') {
$value = substr($value, 1);
}
return $value;
default:
return $value;
}
}
/**
* Format a cookie for a Cookie header
*
* This is used when sending cookies to a server.
*
* @return string Cookie formatted for Cookie header
*/
public function format_for_header() {
return sprintf('%s=%s', $this->name, $this->value);
}
/**
* Format a cookie for a Cookie header
*
* @codeCoverageIgnore
* @deprecated Use {@see Requests_Cookie::format_for_header}
* @return string
*/
public function formatForHeader() {
return $this->format_for_header();
}
/**
* Format a cookie for a Set-Cookie header
*
* This is used when sending cookies to clients. This isn't really
* applicable to client-side usage, but might be handy for debugging.
*
* @return string Cookie formatted for Set-Cookie header
*/
public function format_for_set_cookie() {
$header_value = $this->format_for_header();
if (!empty($this->attributes)) {
$parts = array();
foreach ($this->attributes as $key => $value) {
// Ignore non-associative attributes
if (is_numeric($key)) {
$parts[] = $value;
}
else {
$parts[] = sprintf('%s=%s', $key, $value);
}
}
$header_value .= '; ' . implode('; ', $parts);
}
return $header_value;
}
/**
* Format a cookie for a Set-Cookie header
*
* @codeCoverageIgnore
* @deprecated Use {@see Requests_Cookie::format_for_set_cookie}
* @return string
*/
public function formatForSetCookie() {
return $this->format_for_set_cookie();
}
/**
* Get the cookie value
*
* Attributes and other data can be accessed via methods.
*/
public function __toString() {
return $this->value;
}
/**
* Parse a cookie string into a cookie object
*
* Based on Mozilla's parsing code in Firefox and related projects, which
* is an intentional deviation from RFC 2109 and RFC 2616. RFC 6265
* specifies some of this handling, but not in a thorough manner.
*
* @param string Cookie header value (from a Set-Cookie header)
* @return Requests_Cookie Parsed cookie object
*/
public static function parse($string, $name = '', $reference_time = null) {
$parts = explode(';', $string);
$kvparts = array_shift($parts);
if (!empty($name)) {
$value = $string;
}
elseif (strpos($kvparts, '=') === false) {
// Some sites might only have a value without the equals separator.
// Deviate from RFC 6265 and pretend it was actually a blank name
// (`=foo`)
//
// https://bugzilla.mozilla.org/show_bug.cgi?id=169091
$name = '';
$value = $kvparts;
}
else {
list($name, $value) = explode('=', $kvparts, 2);
}
$name = trim($name);
$value = trim($value);
// Attribute key are handled case-insensitively
$attributes = new Requests_Utility_CaseInsensitiveDictionary();
if (!empty($parts)) {
foreach ($parts as $part) {
if (strpos($part, '=') === false) {
$part_key = $part;
$part_value = true;
}
else {
list($part_key, $part_value) = explode('=', $part, 2);
$part_value = trim($part_value);
}
$part_key = trim($part_key);
$attributes[$part_key] = $part_value;
}
}
return new Requests_Cookie($name, $value, $attributes, array(), $reference_time);
}
/**
* Parse all Set-Cookie headers from request headers
*
* @param Requests_Response_Headers $headers Headers to parse from
* @param Requests_IRI|null $origin URI for comparing cookie origins
* @param int|null $time Reference time for expiration calculation
* @return array
*/
public static function parse_from_headers(Requests_Response_Headers $headers, Requests_IRI $origin = null, $time = null) {
$cookie_headers = $headers->getValues('Set-Cookie');
if (empty($cookie_headers)) {
return array();
}
$cookies = array();
foreach ($cookie_headers as $header) {
$parsed = self::parse($header, '', $time);
// Default domain/path attributes
if (empty($parsed->attributes['domain']) && !empty($origin)) {
$parsed->attributes['domain'] = $origin->host;
$parsed->flags['host-only'] = true;
}
else {
$parsed->flags['host-only'] = false;
}
$path_is_valid = (!empty($parsed->attributes['path']) && $parsed->attributes['path'][0] === '/');
if (!$path_is_valid && !empty($origin)) {
$path = $origin->path;
// Default path normalization as per RFC 6265 section 5.1.4
if (substr($path, 0, 1) !== '/') {
// If the uri-path is empty or if the first character of
// the uri-path is not a %x2F ("/") character, output
// %x2F ("/") and skip the remaining steps.
$path = '/';
}
elseif (substr_count($path, '/') === 1) {
// If the uri-path contains no more than one %x2F ("/")
// character, output %x2F ("/") and skip the remaining
// step.
$path = '/';
}
else {
// Output the characters of the uri-path from the first
// character up to, but not including, the right-most
// %x2F ("/").
$path = substr($path, 0, strrpos($path, '/'));
}
$parsed->attributes['path'] = $path;
}
// Reject invalid cookie domains
if (!empty($origin) && !$parsed->domain_matches($origin->host)) {
continue;
}
$cookies[$parsed->name] = $parsed;
}
return $cookies;
}
/**
* Parse all Set-Cookie headers from request headers
*
* @codeCoverageIgnore
* @deprecated Use {@see Requests_Cookie::parse_from_headers}
* @return string
*/
public static function parseFromHeaders(Requests_Response_Headers $headers) {
return self::parse_from_headers($headers);
}
}

View File

@ -1,175 +0,0 @@
<?php
/**
* Cookie holder object
*
* @package Requests
* @subpackage Cookies
*/
/**
* Cookie holder object
*
* @package Requests
* @subpackage Cookies
*/
class Requests_Cookie_Jar implements ArrayAccess, IteratorAggregate {
/**
* Actual item data
*
* @var array
*/
protected $cookies = array();
/**
* Create a new jar
*
* @param array $cookies Existing cookie values
*/
public function __construct($cookies = array()) {
$this->cookies = $cookies;
}
/**
* Normalise cookie data into a Requests_Cookie
*
* @param string|Requests_Cookie $cookie
* @return Requests_Cookie
*/
public function normalize_cookie($cookie, $key = null) {
if ($cookie instanceof Requests_Cookie) {
return $cookie;
}
return Requests_Cookie::parse($cookie, $key);
}
/**
* Normalise cookie data into a Requests_Cookie
*
* @codeCoverageIgnore
* @deprecated Use {@see Requests_Cookie_Jar::normalize_cookie}
* @return Requests_Cookie
*/
public function normalizeCookie($cookie, $key = null) {
return $this->normalize_cookie($cookie, $key);
}
/**
* Check if the given item exists
*
* @param string $key Item key
* @return boolean Does the item exist?
*/
public function offsetExists($key) {
return isset($this->cookies[$key]);
}
/**
* Get the value for the item
*
* @param string $key Item key
* @return string Item value
*/
public function offsetGet($key) {
if (!isset($this->cookies[$key])) {
return null;
}
return $this->cookies[$key];
}
/**
* Set the given item
*
* @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
*
* @param string $key Item name
* @param string $value Item value
*/
public function offsetSet($key, $value) {
if ($key === null) {
throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
}
$this->cookies[$key] = $value;
}
/**
* Unset the given header
*
* @param string $key
*/
public function offsetUnset($key) {
unset($this->cookies[$key]);
}
/**
* Get an iterator for the data
*
* @return ArrayIterator
*/
public function getIterator() {
return new ArrayIterator($this->cookies);
}
/**
* Register the cookie handler with the request's hooking system
*
* @param Requests_Hooker $hooks Hooking system
*/
public function register(Requests_Hooker $hooks) {
$hooks->register('requests.before_request', array($this, 'before_request'));
$hooks->register('requests.before_redirect_check', array($this, 'before_redirect_check'));
}
/**
* Add Cookie header to a request if we have any
*
* As per RFC 6265, cookies are separated by '; '
*
* @param string $url
* @param array $headers
* @param array $data
* @param string $type
* @param array $options
*/
public function before_request($url, &$headers, &$data, &$type, &$options) {
if (!$url instanceof Requests_IRI) {
$url = new Requests_IRI($url);
}
if (!empty($this->cookies)) {
$cookies = array();
foreach ($this->cookies as $key => $cookie) {
$cookie = $this->normalize_cookie($cookie, $key);
// Skip expired cookies
if ($cookie->is_expired()) {
continue;
}
if ($cookie->domain_matches($url->host)) {
$cookies[] = $cookie->format_for_header();
}
}
$headers['Cookie'] = implode('; ', $cookies);
}
}
/**
* Parse all cookies from a response and attach them to the response
*
* @var Requests_Response $response
*/
public function before_redirect_check(Requests_Response &$return) {
$url = $return->url;
if (!$url instanceof Requests_IRI) {
$url = new Requests_IRI($url);
}
$cookies = Requests_Cookie::parse_from_headers($return->headers, $url);
$this->cookies = array_merge($this->cookies, $cookies);
$return->cookies = $this;
}
}

View File

@ -1,62 +0,0 @@
<?php
/**
* Exception for HTTP requests
*
* @package Requests
*/
/**
* Exception for HTTP requests
*
* @package Requests
*/
class Requests_Exception extends Exception {
/**
* Type of exception
*
* @var string
*/
protected $type;
/**
* Data associated with the exception
*
* @var mixed
*/
protected $data;
/**
* Create a new exception
*
* @param string $message Exception message
* @param string $type Exception type
* @param mixed $data Associated data
* @param integer $code Exception numerical code, if applicable
*/
public function __construct($message, $type, $data = null, $code = 0) {
parent::__construct($message, $code);
$this->type = $type;
$this->data = $data;
}
/**
* Like {@see getCode()}, but a string code.
*
* @codeCoverageIgnore
* @return string
*/
public function getType() {
return $this->type;
}
/**
* Gives any relevant data
*
* @codeCoverageIgnore
* @return mixed
*/
public function getData() {
return $this->data;
}
}

View File

@ -1,71 +0,0 @@
<?php
/**
* Exception based on HTTP response
*
* @package Requests
*/
/**
* Exception based on HTTP response
*
* @package Requests
*/
class Requests_Exception_HTTP extends Requests_Exception {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 0;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Unknown';
/**
* Create a new exception
*
* There is no mechanism to pass in the status code, as this is set by the
* subclass used. Reason phrases can vary, however.
*
* @param string|null $reason Reason phrase
* @param mixed $data Associated data
*/
public function __construct($reason = null, $data = null) {
if ($reason !== null) {
$this->reason = $reason;
}
$message = sprintf('%d %s', $this->code, $this->reason);
parent::__construct($message, 'httpresponse', $data, $this->code);
}
/**
* Get the status message
*/
public function getReason() {
return $this->reason;
}
/**
* Get the correct exception class for a given error code
*
* @param int|bool $code HTTP status code, or false if unavailable
* @return string Exception class name to use
*/
public static function get_class($code) {
if (!$code) {
return 'Requests_Exception_HTTP_Unknown';
}
$class = sprintf('Requests_Exception_HTTP_%d', $code);
if (class_exists($class)) {
return $class;
}
return 'Requests_Exception_HTTP_Unknown';
}
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 304 Not Modified responses
*
* @package Requests
*/
/**
* Exception for 304 Not Modified responses
*
* @package Requests
*/
class Requests_Exception_HTTP_304 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 304;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Not Modified';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 305 Use Proxy responses
*
* @package Requests
*/
/**
* Exception for 305 Use Proxy responses
*
* @package Requests
*/
class Requests_Exception_HTTP_305 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 305;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Use Proxy';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 306 Switch Proxy responses
*
* @package Requests
*/
/**
* Exception for 306 Switch Proxy responses
*
* @package Requests
*/
class Requests_Exception_HTTP_306 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 306;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Switch Proxy';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 400 Bad Request responses
*
* @package Requests
*/
/**
* Exception for 400 Bad Request responses
*
* @package Requests
*/
class Requests_Exception_HTTP_400 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 400;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Bad Request';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 401 Unauthorized responses
*
* @package Requests
*/
/**
* Exception for 401 Unauthorized responses
*
* @package Requests
*/
class Requests_Exception_HTTP_401 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 401;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Unauthorized';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 402 Payment Required responses
*
* @package Requests
*/
/**
* Exception for 402 Payment Required responses
*
* @package Requests
*/
class Requests_Exception_HTTP_402 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 402;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Payment Required';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 403 Forbidden responses
*
* @package Requests
*/
/**
* Exception for 403 Forbidden responses
*
* @package Requests
*/
class Requests_Exception_HTTP_403 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 403;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Forbidden';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 404 Not Found responses
*
* @package Requests
*/
/**
* Exception for 404 Not Found responses
*
* @package Requests
*/
class Requests_Exception_HTTP_404 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 404;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Not Found';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 405 Method Not Allowed responses
*
* @package Requests
*/
/**
* Exception for 405 Method Not Allowed responses
*
* @package Requests
*/
class Requests_Exception_HTTP_405 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 405;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Method Not Allowed';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 406 Not Acceptable responses
*
* @package Requests
*/
/**
* Exception for 406 Not Acceptable responses
*
* @package Requests
*/
class Requests_Exception_HTTP_406 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 406;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Not Acceptable';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 407 Proxy Authentication Required responses
*
* @package Requests
*/
/**
* Exception for 407 Proxy Authentication Required responses
*
* @package Requests
*/
class Requests_Exception_HTTP_407 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 407;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Proxy Authentication Required';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 408 Request Timeout responses
*
* @package Requests
*/
/**
* Exception for 408 Request Timeout responses
*
* @package Requests
*/
class Requests_Exception_HTTP_408 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 408;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Request Timeout';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 409 Conflict responses
*
* @package Requests
*/
/**
* Exception for 409 Conflict responses
*
* @package Requests
*/
class Requests_Exception_HTTP_409 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 409;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Conflict';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 410 Gone responses
*
* @package Requests
*/
/**
* Exception for 410 Gone responses
*
* @package Requests
*/
class Requests_Exception_HTTP_410 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 410;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Gone';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 411 Length Required responses
*
* @package Requests
*/
/**
* Exception for 411 Length Required responses
*
* @package Requests
*/
class Requests_Exception_HTTP_411 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 411;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Length Required';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 412 Precondition Failed responses
*
* @package Requests
*/
/**
* Exception for 412 Precondition Failed responses
*
* @package Requests
*/
class Requests_Exception_HTTP_412 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 412;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Precondition Failed';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 413 Request Entity Too Large responses
*
* @package Requests
*/
/**
* Exception for 413 Request Entity Too Large responses
*
* @package Requests
*/
class Requests_Exception_HTTP_413 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 413;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Request Entity Too Large';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 414 Request-URI Too Large responses
*
* @package Requests
*/
/**
* Exception for 414 Request-URI Too Large responses
*
* @package Requests
*/
class Requests_Exception_HTTP_414 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 414;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Request-URI Too Large';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 415 Unsupported Media Type responses
*
* @package Requests
*/
/**
* Exception for 415 Unsupported Media Type responses
*
* @package Requests
*/
class Requests_Exception_HTTP_415 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 415;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Unsupported Media Type';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 416 Requested Range Not Satisfiable responses
*
* @package Requests
*/
/**
* Exception for 416 Requested Range Not Satisfiable responses
*
* @package Requests
*/
class Requests_Exception_HTTP_416 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 416;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Requested Range Not Satisfiable';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 417 Expectation Failed responses
*
* @package Requests
*/
/**
* Exception for 417 Expectation Failed responses
*
* @package Requests
*/
class Requests_Exception_HTTP_417 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 417;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Expectation Failed';
}

View File

@ -1,29 +0,0 @@
<?php
/**
* Exception for 418 I'm A Teapot responses
*
* @see https://tools.ietf.org/html/rfc2324
* @package Requests
*/
/**
* Exception for 418 I'm A Teapot responses
*
* @see https://tools.ietf.org/html/rfc2324
* @package Requests
*/
class Requests_Exception_HTTP_418 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 418;
/**
* Reason phrase
*
* @var string
*/
protected $reason = "I'm A Teapot";
}

View File

@ -1,29 +0,0 @@
<?php
/**
* Exception for 428 Precondition Required responses
*
* @see https://tools.ietf.org/html/rfc6585
* @package Requests
*/
/**
* Exception for 428 Precondition Required responses
*
* @see https://tools.ietf.org/html/rfc6585
* @package Requests
*/
class Requests_Exception_HTTP_428 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 428;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Precondition Required';
}

View File

@ -1,29 +0,0 @@
<?php
/**
* Exception for 429 Too Many Requests responses
*
* @see https://tools.ietf.org/html/draft-nottingham-http-new-status-04
* @package Requests
*/
/**
* Exception for 429 Too Many Requests responses
*
* @see https://tools.ietf.org/html/draft-nottingham-http-new-status-04
* @package Requests
*/
class Requests_Exception_HTTP_429 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 429;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Too Many Requests';
}

View File

@ -1,29 +0,0 @@
<?php
/**
* Exception for 431 Request Header Fields Too Large responses
*
* @see https://tools.ietf.org/html/rfc6585
* @package Requests
*/
/**
* Exception for 431 Request Header Fields Too Large responses
*
* @see https://tools.ietf.org/html/rfc6585
* @package Requests
*/
class Requests_Exception_HTTP_431 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 431;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Request Header Fields Too Large';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 500 Internal Server Error responses
*
* @package Requests
*/
/**
* Exception for 500 Internal Server Error responses
*
* @package Requests
*/
class Requests_Exception_HTTP_500 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 500;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Internal Server Error';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 501 Not Implemented responses
*
* @package Requests
*/
/**
* Exception for 501 Not Implemented responses
*
* @package Requests
*/
class Requests_Exception_HTTP_501 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 501;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Not Implemented';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 502 Bad Gateway responses
*
* @package Requests
*/
/**
* Exception for 502 Bad Gateway responses
*
* @package Requests
*/
class Requests_Exception_HTTP_502 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 502;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Bad Gateway';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 503 Service Unavailable responses
*
* @package Requests
*/
/**
* Exception for 503 Service Unavailable responses
*
* @package Requests
*/
class Requests_Exception_HTTP_503 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 503;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Service Unavailable';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 504 Gateway Timeout responses
*
* @package Requests
*/
/**
* Exception for 504 Gateway Timeout responses
*
* @package Requests
*/
class Requests_Exception_HTTP_504 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 504;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Gateway Timeout';
}

View File

@ -1,27 +0,0 @@
<?php
/**
* Exception for 505 HTTP Version Not Supported responses
*
* @package Requests
*/
/**
* Exception for 505 HTTP Version Not Supported responses
*
* @package Requests
*/
class Requests_Exception_HTTP_505 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 505;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'HTTP Version Not Supported';
}

View File

@ -1,29 +0,0 @@
<?php
/**
* Exception for 511 Network Authentication Required responses
*
* @see https://tools.ietf.org/html/rfc6585
* @package Requests
*/
/**
* Exception for 511 Network Authentication Required responses
*
* @see https://tools.ietf.org/html/rfc6585
* @package Requests
*/
class Requests_Exception_HTTP_511 extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer
*/
protected $code = 511;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Network Authentication Required';
}

View File

@ -1,44 +0,0 @@
<?php
/**
* Exception for unknown status responses
*
* @package Requests
*/
/**
* Exception for unknown status responses
*
* @package Requests
*/
class Requests_Exception_HTTP_Unknown extends Requests_Exception_HTTP {
/**
* HTTP status code
*
* @var integer|bool Code if available, false if an error occurred
*/
protected $code = 0;
/**
* Reason phrase
*
* @var string
*/
protected $reason = 'Unknown';
/**
* Create a new exception
*
* If `$data` is an instance of {@see Requests_Response}, uses the status
* code from it. Otherwise, sets as 0
*
* @param string|null $reason Reason phrase
* @param mixed $data Associated data
*/
public function __construct($reason = null, $data = null) {
if ($data instanceof Requests_Response) {
$this->code = $data->status_code;
}
parent::__construct($reason, $data);
}
}

View File

@ -1,5 +0,0 @@
<?php
class Requests_Exception_Transport extends Requests_Exception {
}

Some files were not shown because too many files have changed in this diff Show More