diff --git a/conf/cron_lutim b/conf/cron_lutim
index f734874..e0f1a91 100644
--- a/conf/cron_lutim
+++ b/conf/cron_lutim
@@ -1,11 +1,12 @@
# Génération des statistiques. Tous les jours, à 5h.
-0 5 * * * www-data carton exec script/lutim cron stats && carton exec hypnotoad script/lutim
+# 0 5 * * * www-data carton exec script/lutim cron stats && carton exec hypnotoad __FINALPATH__/script/lutim
+0 5 * * * www-data cd "__FINALPATH__" && /usr/local/bin/carton exec script/lutim cron stats
# Suppression des adresses IP obsolètes. Tous les jours, à 6h.
-0 6 * * * www-data carton exec script/lutim cron cleanbdd
+0 6 * * * www-data cd "__FINALPATH__" && /usr/local/bin/carton exec script/lutim cron cleanbdd
# Suppression des images dont le délai a expiré. Tous les jours, à 6h.
-0 6 * * * www-data carton exec script/lutim cron cleanfiles
+0 6 * * * www-data cd "__FINALPATH__" && /usr/local/bin/carton exec script/lutim cron cleanfiles
# Vérification de l'occupation du dossier des images. Tous les jours, à 7h.
-0 7 * * * www-data carton exec script/lutim cron watch
+0 7 * * * www-data cd "__FINALPATH__" && /usr/local/bin/carton exec script/lutim cron watch
diff --git a/conf/lutim.conf.template b/conf/lutim.conf.template
index 1376df2..13622aa 100644
--- a/conf/lutim.conf.template
+++ b/conf/lutim.conf.template
@@ -6,6 +6,7 @@
# see http://mojolicio.us/perldoc/Mojo/Server/Hypnotoad for a full list of settings
hypnotoad => {
# array of IP addresses and ports you want to listen to
+ #listen => ['http://127.0.0.1:8080'],
listen => ['http://127.0.0.1:8095'],
# user and group you want for Lutim to run with
# be sure that this user/group have rights on the lutim directory
@@ -36,9 +37,6 @@
#provis_step => 5,
# max number of URLs to be provisioned
- # WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- # in the first version, this option was provisionning with two 'n'. While the option with the typo is still valid, it is deprecated.
- # in the next version (0.4), only provisioning with ine 'n' will be accepted
# optional, default is 100
#provisioning => 100,
@@ -66,6 +64,7 @@
# here's an exemple to put the logo of your hoster
# optional, no default
#hosted_by => 'My super hoster ',
+ hosted_by => 'Stats' ,
# DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED
# Lutim now checks if the X-Forwarded-Proto header is present and equal to https.
@@ -85,7 +84,7 @@
# default time limit for files
# valid values are 0, 1, 7, 30 and 365
# optional, default is 0 (no limit)
- #default_delay => 0,
+ default_delay => 365,
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
# a warning message will be displayed on homepage
@@ -100,6 +99,13 @@
# optional, default is 24
#token_length => 24,
+ # URL sub-directory in which you want Lutim to be accessible
+ # example: you want to have Lutim under https://example.org/lutim/
+ # => set url_sub_dir to '/lutim' or to '/lutim/', it doesn't matter
+ # optional, defaut is /
+ #url_sub_dir => '/',
+ url_sub_dir => '__PATH__',
+
##########################
# Lutim cron jobs settings
##########################
@@ -116,16 +122,17 @@
# max size of the files directory, in octets
# used by script/lutim cron watch to trigger an action
# optional, no default
- #max_total_size => 10*1024*1024*1024,
+ #max_total_size => 10*1024*1024*1024, # (=10 Go)
+ max_total_size => 1024*1024*1024, # (=1 Go)
# default action when files directory is over max_total_size (used with script/lutim cron watch)
# valid values are 'warn', 'stop-upload' and 'delete'
# please, see readme
# optional, default is 'warn'
- #policy_when_full => 'warn',
+ policy_when_full => 'stop-upload',
# images which are not viewed since delete_no_longer_viewed_files days will be deleted by the cron cleanfiles task
# if delete_no_longer_viewed_files is not set, the no longer viewed files will NOT be deleted
# optional, no default
- delete_no_longer_viewed_files => 180
+ #delete_no_longer_viewed_files => 90
};
diff --git a/conf/nginx.conf b/conf/nginx.conf
index 319bab8..7cc02ad 100644
--- a/conf/nginx.conf
+++ b/conf/nginx.conf
@@ -1,72 +1,36 @@
-#location __PATH__ {
-# alias __FINALPATH__;
-# if ($scheme = http) {
-# rewrite ^ https://$server_name$request_uri? permanent;
-# }
-# index index.php index.html index.htm;
-# default_type text/html;
-# location ~ [^/]\.php(/|$) {
-# fastcgi_split_path_info ^(.+?\.php)(/.*)$;
-# fastcgi_pass unix:/var/run/php5-fpm.sock;
-# fastcgi_index index.php;
-# include fastcgi_params;
-# fastcgi_param REMOTE_USER $remote_user;
-# fastcgi_param PATH_INFO $fastcgi_path_info;
-# }
-#
- # Include SSOWAT user panel.
-# include conf.d/yunohost_panel.conf.inc;
-#}
+location __PATH__ {
+ if ($scheme = http) {
+ rewrite ^ https://$server_name$request_uri? permanent;
+ }
+ location ~ [^/]\.php(/|$) {
+ fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+ fastcgi_pass unix:/var/run/php5-fpm.sock;
+ fastcgi_index index.php;
+ include fastcgi_params;
+ fastcgi_param REMOTE_USER $remote_user;
+ fastcgi_param PATH_INFO $fastcgi_path_info;
+ }
-
-
-
-#server {
-# listen 80;
-# root /path/to/lutim/public;
+ # Include SSOWAT user panel.
+ include conf.d/yunohost_panel.conf.inc;
# This is important for user's privacy !
-# access_log off;
-# error_log /var/log/nginx/lutim.error.log;
+ access_log off;
+ error_log /var/log/nginx/lutim.error.log;
# This is important ! Make it OK with your Lutim configuration
client_max_body_size 40M;
- location ~* ^/(img|css|font|js)/ {
- try_files $uri @lutim;
- add_header Expires "Thu, 31 Dec 2037 23:55:55 GMT";
- add_header Cache-Control "public, max-age=315360000";
+ proxy_pass http://127.0.0.1:8095;
- # HTTPS only header, improves security
- #add_header Strict-Transport-Security "max-age=15768000";
- }
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-# location / {
- location __PATH__ {
-#alias __FINALPATH__;
- try_files $uri @lutim;
+ # Lutim reads this header and understands that the current session is actually HTTPS.
+ # Enable it if you run a HTTPS server (in this case, don't forgot to change the listen port $
+ proxy_set_header X-Forwarded-Proto https;
- # HTTPS only header, improves security
- #add_header Strict-Transport-Security "max-age=15768000";
- }
-
- location @lutim {
- # Adapt this to your configuration
- # My advice: put a varnish between nginx and Lutim, it's really useful when images are widel$
- proxy_pass http://127.0.0.1:8080;
-
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-
- # If you want to log the remote port of the image senders, you'll need that
- proxy_set_header X-Remote-Port $remote_port;
-
- # Lutim reads this header and understands that the current session is actually HTTPS.
- # Enable it if you run a HTTPS server (in this case, don't forgot to change the listen port $
- #proxy_set_header X-Forwarded-Proto https;
-
- # We expect the downsteam servers to redirect to the right hostname, so don't do any rewrite$
- proxy_redirect off;
- }
-#}
\ No newline at end of file
+ # We expect the downsteam servers to redirect to the right hostname, so don't do any rewrite$
+ proxy_redirect off;
+}
diff --git a/lutim-proxy.zip b/lutim-proxy.zip
new file mode 100644
index 0000000..b4fb05c
Binary files /dev/null and b/lutim-proxy.zip differ
diff --git a/manifest.json b/manifest.json
index f066d19..8949922 100644
--- a/manifest.json
+++ b/manifest.json
@@ -3,8 +3,7 @@
"id": "lutim",
"description": {
"en": "Leed is a minimalistic RSS feed aggregator which allows quick and non-intrusive reading of feeds.",
- "fr": "Leed est un agrégateur RSS minimaliste qui permet la consultation de flux RSS de manière rapide et non intrusive."
-Lutim est un logiciel d’hébergement d’images. Il s’agit aussi du nom du logiciel (libre) qui fournit ce service.
+ "fr": "Lutim est un logiciel d’hébergement d’images. Il s’agit aussi du nom du logiciel (libre) qui fournit ce service."
},
"version": "0.6",
"url": "https://lut.im",
@@ -19,36 +18,38 @@ Lutim est un logiciel d’hébergement d’images. Il s’agit aussi du nom du l
"name": "domain",
"ask": {
"en": "Choose a domain for Lutim",
- "fr": "Choisissez un domaine pour Lutim"
+ "fr": "Choisissez un domaine pour Lutim"
},
- "example": "domain.org"
+ "example": "domain.org",
+ "default": "crudelis-test.fr"
},
{
"name": "path",
"ask": {
"en": "Choose a path for Lutim",
- "fr": "Choisissez un chemin pour Lutim"
+ "fr": "Choisissez un chemin pour Lutim"
},
"example": "/lutim",
"default": "/lutim"
},
- {
- "name": "admin",
- "ask": {
- "en": "Choose the Lutim administrator (must be an existing YunoHost user)",
- "fr": "Choisissez un administrateur Lutim (doit être un utilisateur YunoHost)"
- },
- "example": "john"
- },
- {
- "name": "is_public",
- "ask": {
- "en": "Uploading images is it public?",
- "fr": "L'upload des images est-il public ?"
- },
- "choices": ["Yes", "No"],
- "default": "No"
- }
+ {
+ "name": "admin",
+ "ask": {
+ "en": "Choose the Lutim administrator (must be an existing YunoHost user)",
+ "fr": "Choisissez un administrateur Lutim (doit être un utilisateur YunoHost)"
+ },
+ "example": "john",
+ "default": "mcrudelis"
+ },
+ {
+ "name": "is_public",
+ "ask": {
+ "en": "Uploading images is it public?",
+ "fr": "L'upload des images est-il public ?"
+ },
+ "choices": ["Yes", "No"],
+ "default": "No"
+ }
]
}
}
diff --git a/scripts/install b/scripts/install
index 4f09a22..2fe3989 100644
--- a/scripts/install
+++ b/scripts/install
@@ -14,7 +14,7 @@ if [[ ! $? -eq 0 ]]; then
fi
# Check domain/path availability
-sudo yunohost app checkurl $domain$path -a leed
+sudo yunohost app checkurl $domain$path -a lutim
if [[ ! $? -eq 0 ]]; then
exit 1
fi
@@ -30,25 +30,32 @@ sudo cp -a ../sources/lutim-master/* $final_path
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/lutim.conf
# Installation du module perl carton
-yes | sudo cpan Carton
+echo "Installation du module perl carton. Attention, étape très longue..."
+# yes | sudo cpan Carton | sudo tee $final_path/cpan_setup.log 2>&1 > /dev/null 2>&1 # Debug
+yes | sudo cpan Carton > /dev/null 2>&1
+
# Installation de perlmagick, interface perl pour imagemagick
sudo apt-get install perlmagick -qy
-# Installation de lutim via carton
-cd $final_path
- echo pwd
-sudo carton install
-
## Copie et configuration du fichier de conf.
sudo cp ../conf/lutim.conf.template $final_path/lutim.conf
sudo sed -i "s@__DOMAIN__@$domain@g" $final_path/lutim.conf
+sudo sed -i "s@__PATH__@$path@g" $final_path/lutim.conf
# Mise en place des scripts init
sudo cp ../sources/lutim-master/utilities/lutim.init /etc/init.d/lutim
sudo cp ../conf/lutim.default /etc/default/lutim
sudo chmod +x /etc/init.d/lutim
-chown root:root /etc/init.d/lutim /etc/default/lutim
-sudo sed -i "s@__FINALPATH__@$final_path@g" /etc/default/lutim
+sudo chown root:root /etc/init.d/lutim /etc/default/lutim
+sudo sed -i "s@__FINALPATH__@$final_path/@g" /etc/default/lutim
+
+## Mise en place des crons
+sudo cp ../conf/cron_lutim /etc/cron.d/lutim
+sudo sed -i "s@__FINALPATH__@$final_path/@g" /etc/cron.d/lutim
+
+# Installation de lutim via carton
+cd $final_path
+sudo carton install
## Démarrage auto des scripts init
sudo update-rc.d lutim defaults
@@ -56,17 +63,8 @@ sudo update-rc.d lutim defaults
# Change variables in nginx configuration
sudo sed -i "s@__PATH__@$path@g" /etc/nginx/conf.d/$domain.d/lutim.conf
-sudo sed -i "s@__FINALPATH__@$final_path/@g" /etc/nginx/conf.d/$domain.d/lutim.conf
-
-## Voir les crons et les mettre en place.
-# Files owned by root, www-data can just read
-# sudo find $final_path -type f | xargs sudo chmod 644
-# sudo find $final_path -type d | xargs sudo chmod 755
-# sudo chown -R root: $final_path
-# www-data can write on plugins and cache
-# sudo chown -R www-data $final_path/cache $final_path/plugins
# Set right permissions
sudo chown -R www-data: $final_path
@@ -76,8 +74,8 @@ if [ "$is_public" = "Yes" ];
then
sudo yunohost app setting lutim skipped_uris -v "/"
else # Si l'app est privée, seul le visionnage des images est public
- sudo yunohost app setting lutim skipped_regex -v "/(stats|manifest.webapp|(d|m)/.+)?$"
-fi # REGEX À INVERSER ! Je pense...
+# sudo yunohost app setting lutim skipped_regex -v "/(stats|manifest.webapp|(d|m)/.+)?$"
+fi
# Reload Nginx, start lutim and regenerate SSOwat conf
sudo service nginx reload
diff --git a/sources/cpanfile b/sources/cpanfile
new file mode 100644
index 0000000..cfac929
--- /dev/null
+++ b/sources/cpanfile
@@ -0,0 +1,15 @@
+requires 'Mojolicious';
+requires 'EV';
+requires 'Data::Validate::URI';
+requires 'Mojolicious::Plugin::I18N';
+requires 'Mojolicious::Plugin::AssetPack';
+requires 'ORLite';
+requires 'File::Type';
+requires 'Text::Unidecode';
+requires 'DateTime';
+requires 'Filesys::DiskUsage';
+requires 'Switch';
+requires 'Data::Validate::URI';
+requires 'Crypt::CBC';
+requires 'Crypt::Blowfish';
+requires "IO::Socket::SSL";
diff --git a/sources/lutim-master/Changes b/sources/lutim-master/Changes
index 2ba5335..21f08b7 100644
--- a/sources/lutim-master/Changes
+++ b/sources/lutim-master/Changes
@@ -1,5 +1,19 @@
Revision history for Lutim
+0.7 2015-?
+ - Allow Lutim to be on a sub-directory (like http://example.org/lutim/) (#46)
+ - Remove deprecated (due to typo) option "provisionning".
+
+0.6 2014-10-03
+ - Add OpenGraph tags in social page (ex-twitter page)
+ - Update README.md
+ - Update info page
+
+0.5 2014-09-24
+ - Add support for animated gif in Twitter cards (#45)
+ - Update README.md with Twitter integration informations
+ - bugfixes
+
0.4 2014-07-12
- Webapp ! Downloadable directly from the Lutim instance
- Configure expiration delay after uploading (#12)
diff --git a/sources/lutim-master/README.md b/sources/lutim-master/README.md
index 9982891..333b18e 100644
--- a/sources/lutim-master/README.md
+++ b/sources/lutim-master/README.md
@@ -4,7 +4,8 @@
It means Let's Upload That Image.
## What does it do?
-It stores images and allows you to see them, download them or use them in Twitter.
+It stores images and allows you to see them, download them or share them on social networks. From version 0.5, the gif images can be displayed as animated gifs in Twitter, but you need a HTTPS server (Twitter requires that. Lutim detects if you have a HTTPS server and displays an static image twitter card if you don't);
+
Images are indefinitly stored unless you request that they will be deleted at first view or after 24 hours / one week / one month / one year.
## License
@@ -34,21 +35,27 @@ sudo apt-get install carton
* But, on another hand, some modules that Carton will install need to be compiled. So you will need some tools:
```shell
-sudo apt-get install build-essential libssl-dev
+sudo apt-get install build-essential
```
-### Thumbnails dependancy
-If you want to provide thumbnails of uploaded images, you have to install the *ImageMagick* image manipulation software ( ) and the Image::Magick CPAN module.
+### Thumbnails and animated gifs in Twitter dependancy
+If you want to provide thumbnails of uploaded images or have animated gifs in Twitter, you have to install the *ImageMagick* image manipulation software ( ) and the Image::Magick CPAN module.
On Debian, you can do:
```shell
sudo apt-get install perlmagick
```
+## Twitter integration
+If you want to share images of your Lutim instance on Twitter, you have to register your site at .
+
+## Other social networks integration
+It seems that you only need to put the Lutim' social page link (the one with `?t`) in your post and it will be automatically embedded.
+
## Installation
After installing Carton :
```shell
-git clone https://github.com/ldidry/lutim.git
+git clone https://git.framasoft.org/luc/lutim.git
cd lutim
carton install
cp lutim.conf.template lutim.conf
@@ -119,6 +126,17 @@ UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE lutim ( short TEXT PRIMARY KEY, pat
PRAGMA writable_schema = 0;
```
+***Warning!!!***
+
+If you want to update to Lutim **0.5**, from a previous version, you'll have to modify the database.
+
+```
+sqlite3 lutim.db
+PRAGMA writable_schema = 1;
+UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE lutim ( short TEXT PRIMARY KEY, path TEXT, footprint TEXT, enabled INTEGER, mediatype TEXT, filename TEXT, counter INTEGER, delete_at_first_view INTEGER, delete_at_day INTEGER, created_at INTEGER, created_by TEXT, last_access_at INTEGER, mod_token TEXT, width INTEGER, height INTEGER)' WHERE NAME = 'lutim';
+PRAGMA writable_schema = 0;
+```
+
## Reverse proxy
You can use a reverse proxy like Nginx or Varnish (or Apache with the mod_proxy module). The web is full of tutos.
@@ -272,10 +290,12 @@ vim de.pm
There's just a few sentences, so it will be quick to translate. Please consider to send me you language file in order to help the other users :smile:.
## Others projects dependancies
-Lutim is written in Perl with the [Mojolicious](http://mojolicio.us) framework, uses the [Twitter bootstrap](http://getbootstrap.com) framework to look not too ugly, [JQuery](http://jquery.com) and [JQuery File Uploader](https://github.com/danielm/uploader/) (slightly modified) to add some modernity, [Raphaël](http://raphaeljs.com/) and [morris.js](http://www.oesmith.co.uk/morris.js/) for stats graphs.
+Lutim is written in Perl with the [Mojolicious](http://mojolicio.us) framework, uses the [Twitter bootstrap](http://getbootstrap.com) framework to look not too ugly, [JQuery](http://jquery.com) and [JQuery File Uploader](https://github.com/danielm/uploader/) (slightly modified) to add some modernity, [Raphaël](http://raphaeljs.com/) and [morris.js](http://www.oesmith.co.uk/morris.js/) for stats graphs and [freezeframe.js](http://freezeframe.chrisantonellis.com/) (slightly modified) to be able to freeze animated gifs in twitter card.
+
+Licenses for the icons fonts are in `public/font/LICENSE.txt`.
## Main developers
-* Luc Didry, aka Sky (), core developer, [@framasky](https://twitter.com/framasky)
+* Luc Didry, aka Sky (), core developer, @framasky on [Twitter](https://twitter.com/framasky) and on [Diaspora*](https://framasphere.org/public/framasky)
* Dattaz (), webapp developer, [@dat_taz](https://twitter.com/dat_taz)
## Contributors
diff --git a/sources/lutim-master/cpanfile b/sources/lutim-master/cpanfile
index 4394a33..cfac929 100644
--- a/sources/lutim-master/cpanfile
+++ b/sources/lutim-master/cpanfile
@@ -2,7 +2,6 @@ requires 'Mojolicious';
requires 'EV';
requires 'Data::Validate::URI';
requires 'Mojolicious::Plugin::I18N';
-requires 'Mojolicious::Plugin::ConfigHashMerge';
requires 'Mojolicious::Plugin::AssetPack';
requires 'ORLite';
requires 'File::Type';
@@ -13,3 +12,4 @@ requires 'Switch';
requires 'Data::Validate::URI';
requires 'Crypt::CBC';
requires 'Crypt::Blowfish';
+requires "IO::Socket::SSL";
diff --git a/sources/lutim-master/cpanfile.snapshot b/sources/lutim-master/cpanfile.snapshot
index 7146217..8eac5a6 100644
--- a/sources/lutim-master/cpanfile.snapshot
+++ b/sources/lutim-master/cpanfile.snapshot
@@ -1,13 +1,41 @@
# carton snapshot format: version 1.0
DISTRIBUTIONS
- Algorithm-Diff-1.1902
- pathname: T/TY/TYEMQ/Algorithm-Diff-1.1902.tar.gz
+ CPAN-Meta-2.143240
+ pathname: D/DA/DAGOLDEN/CPAN-Meta-2.143240.tar.gz
provides:
- Algorithm::Diff 1.1902
- Algorithm::Diff::_impl 1.1902
- Algorithm::DiffOld 1.1
+ CPAN::Meta 2.143240
+ CPAN::Meta::Converter 2.143240
+ CPAN::Meta::Feature 2.143240
+ CPAN::Meta::History 2.143240
+ CPAN::Meta::Merge 2.143240
+ CPAN::Meta::Prereqs 2.143240
+ CPAN::Meta::Spec 2.143240
+ CPAN::Meta::Validator 2.143240
requirements:
- ExtUtils::MakeMaker 0
+ CPAN::Meta::Requirements 2.121
+ CPAN::Meta::YAML 0.008
+ Carp 0
+ ExtUtils::MakeMaker 6.17
+ JSON::PP 2.27200
+ Parse::CPAN::Meta 1.4414
+ Scalar::Util 0
+ perl 5.008
+ strict 0
+ version 0.88
+ warnings 0
+ CPAN-Meta-YAML-0.012
+ pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.012.tar.gz
+ provides:
+ CPAN::Meta::YAML 0.012
+ requirements:
+ B 0
+ Carp 0
+ Exporter 0
+ ExtUtils::MakeMaker 6.17
+ Fcntl 0
+ Scalar::Util 0
+ strict 0
+ warnings 0
CSS-Minifier-XS-0.09
pathname: G/GT/GTERMARS/CSS-Minifier-XS-0.09.tar.gz
provides:
@@ -30,45 +58,12 @@ DISTRIBUTIONS
parent 0
strict 0
warnings 0
- Class-Data-Inheritable-0.08
- pathname: T/TM/TMTM/Class-Data-Inheritable-0.08.tar.gz
+ Class-Singleton-1.5
+ pathname: S/SH/SHAY/Class-Singleton-1.5.tar.gz
provides:
- Class::Data::Inheritable 0.08
+ Class::Singleton 1.5
requirements:
ExtUtils::MakeMaker 0
- Class-Load-0.21
- pathname: E/ET/ETHER/Class-Load-0.21.tar.gz
- provides:
- Class::Load 0.21
- Class::Load::PP 0.21
- requirements:
- Carp 0
- Data::OptList 0
- Exporter 0
- ExtUtils::MakeMaker 6.30
- Module::Build::Tiny 0.034
- Module::Implementation 0.04
- Module::Runtime 0.012
- Package::Stash 0.14
- Scalar::Util 0
- Try::Tiny 0
- base 0
- perl 5.008
- strict 0
- warnings 0
- Class-Singleton-1.4
- pathname: A/AB/ABW/Class-Singleton-1.4.tar.gz
- provides:
- Class::Singleton 1.4
- requirements:
- ExtUtils::MakeMaker 0
- Clone-0.36
- pathname: G/GA/GARU/Clone-0.36.tar.gz
- provides:
- Clone 0.36
- requirements:
- ExtUtils::MakeMaker 0
- Test::More 0
Crypt-Blowfish-2.14
pathname: D/DP/DPARIS/Crypt-Blowfish-2.14.tar.gz
provides:
@@ -82,13 +77,19 @@ DISTRIBUTIONS
requirements:
Digest::MD5 2.00
ExtUtils::MakeMaker 0
- DBD-SQLite-1.40
- pathname: I/IS/ISHIGAKI/DBD-SQLite-1.40.tar.gz
+ DBD-SQLite-1.46
+ pathname: I/IS/ISHIGAKI/DBD-SQLite-1.46.tar.gz
provides:
- DBD::SQLite 1.40
- DBD::SQLite::_WriteOnceHash 1.40
- DBD::SQLite::db 1.40
- DBD::SQLite::dr 1.40
+ DBD::SQLite 1.46
+ DBD::SQLite::VirtualTable 1.46
+ DBD::SQLite::VirtualTable::Cursor 1.46
+ DBD::SQLite::VirtualTable::FileContent undef
+ DBD::SQLite::VirtualTable::FileContent::Cursor undef
+ DBD::SQLite::VirtualTable::PerlData undef
+ DBD::SQLite::VirtualTable::PerlData::Cursor undef
+ DBD::SQLite::_WriteOnceHash 1.46
+ DBD::SQLite::db 1.46
+ DBD::SQLite::dr 1.46
requirements:
DBI 1.57
ExtUtils::MakeMaker 0
@@ -97,8 +98,8 @@ DISTRIBUTIONS
Test::More 0.47
Tie::Hash 0
perl 5.006
- DBI-1.631
- pathname: T/TI/TIMB/DBI-1.631.tar.gz
+ DBI-1.632
+ pathname: T/TI/TIMB/DBI-1.632.tar.gz
provides:
Bundle::DBI 12.008696
DBD::DBM 0.08
@@ -111,15 +112,15 @@ DISTRIBUTIONS
DBD::ExampleP::db 12.014311
DBD::ExampleP::dr 12.014311
DBD::ExampleP::st 12.014311
- DBD::File 0.42
- DBD::File::DataSource::File 0.42
- DBD::File::DataSource::Stream 0.42
- DBD::File::Statement 0.42
- DBD::File::Table 0.42
- DBD::File::TableSource::FileSystem 0.42
- DBD::File::db 0.42
- DBD::File::dr 0.42
- DBD::File::st 0.42
+ DBD::File 0.43
+ DBD::File::DataSource::File 0.43
+ DBD::File::DataSource::Stream 0.43
+ DBD::File::Statement 0.43
+ DBD::File::Table 0.43
+ DBD::File::TableSource::FileSystem 0.43
+ DBD::File::db 0.43
+ DBD::File::dr 0.43
+ DBD::File::st 0.43
DBD::Gofer 0.015327
DBD::Gofer::Policy::Base 0.010088
DBD::Gofer::Policy::classic 0.010088
@@ -147,7 +148,7 @@ DISTRIBUTIONS
DBD::Sponge::dr 12.010003
DBD::Sponge::st 12.010003
DBDI 12.015129
- DBI 1.631
+ DBI 1.632
DBI::Const::GetInfo::ANSI 2.008697
DBI::Const::GetInfo::ODBC 2.011374
DBI::Const::GetInfoReturn 2.008697
@@ -188,22 +189,11 @@ DISTRIBUTIONS
DBI::SQL::Nano::Table_ 1.015544
DBI::Util::CacheMemory 0.010315
DBI::Util::_accessor 0.009479
- DBI::common 1.631
+ DBI::common 1.632
requirements:
ExtUtils::MakeMaker 6.48
Test::Simple 0.90
perl 5.008
- Data-OptList-0.109
- pathname: R/RJ/RJBS/Data-OptList-0.109.tar.gz
- provides:
- Data::OptList 0.109
- requirements:
- ExtUtils::MakeMaker 6.30
- List::Util 0
- Params::Util 0
- Sub::Install 0.921
- strict 0
- warnings 0
Data-Validate-Domain-0.10
pathname: N/NE/NEELY/Data-Validate-Domain-0.10.tar.gz
provides:
@@ -212,13 +202,13 @@ DISTRIBUTIONS
ExtUtils::MakeMaker 0
Net::Domain::TLD 1.62
Test::More 0
- Data-Validate-IP-0.22
- pathname: D/DR/DROLSKY/Data-Validate-IP-0.22.tar.gz
+ Data-Validate-IP-0.24
+ pathname: D/DR/DROLSKY/Data-Validate-IP-0.24.tar.gz
provides:
- Data::Validate::IP 0.22
+ Data::Validate::IP 0.24
requirements:
Exporter 0
- ExtUtils::MakeMaker 6.30
+ ExtUtils::MakeMaker 0
NetAddr::IP 4
Scalar::Util 0
strict 0
@@ -231,26 +221,29 @@ DISTRIBUTIONS
Data::Validate::Domain 0
Data::Validate::IP 0
ExtUtils::MakeMaker 0
- DateTime-1.10
- pathname: D/DR/DROLSKY/DateTime-1.10.tar.gz
+ DateTime-1.12
+ pathname: D/DR/DROLSKY/DateTime-1.12.tar.gz
provides:
- DateTime 1.10
- DateTime::Duration 1.10
- DateTime::Helpers 1.10
- DateTime::Infinite 1.10
- DateTime::Infinite::Future 1.10
- DateTime::Infinite::Past 1.10
- DateTime::LeapSecond 1.10
- inc::MyModuleBuild undef
+ DateTime 1.12
+ DateTime::Duration 1.12
+ DateTime::Helpers 1.12
+ DateTime::Infinite 1.12
+ DateTime::LeapSecond 1.12
requirements:
Carp 0
DateTime::Locale 0.41
- DateTime::TimeZone 1.09
+ DateTime::TimeZone 1.74
ExtUtils::CBuilder 0
- Module::Build 0.3601
+ ExtUtils::MakeMaker 0
+ File::Spec 0
+ Module::Build 0.28
POSIX 0
Params::Validate 0.76
Scalar::Util 0
+ Storable 0
+ Test::Fatal 0
+ Test::More 0.88
+ Test::Warnings 0.005
Try::Tiny 0
XSLoader 0
base 0
@@ -259,6 +252,7 @@ DISTRIBUTIONS
overload 0
perl 5.008001
strict 0
+ utf8 0
vars 0
warnings 0
warnings::register 0
@@ -739,563 +733,457 @@ DISTRIBUTIONS
Module::Build 0.36
Params::Validate 0.91
perl 5.006
- DateTime-TimeZone-1.64
- pathname: D/DR/DROLSKY/DateTime-TimeZone-1.64.tar.gz
+ DateTime-TimeZone-1.83
+ pathname: D/DR/DROLSKY/DateTime-TimeZone-1.83.tar.gz
provides:
- DateTime::TimeZone 1.64
- DateTime::TimeZone::Africa::Abidjan 1.64
- DateTime::TimeZone::Africa::Accra 1.64
- DateTime::TimeZone::Africa::Addis_Ababa 1.64
- DateTime::TimeZone::Africa::Algiers 1.64
- DateTime::TimeZone::Africa::Asmara 1.64
- DateTime::TimeZone::Africa::Bamako 1.64
- DateTime::TimeZone::Africa::Bangui 1.64
- DateTime::TimeZone::Africa::Banjul 1.64
- DateTime::TimeZone::Africa::Bissau 1.64
- DateTime::TimeZone::Africa::Blantyre 1.64
- DateTime::TimeZone::Africa::Brazzaville 1.64
- DateTime::TimeZone::Africa::Bujumbura 1.64
- DateTime::TimeZone::Africa::Cairo 1.64
- DateTime::TimeZone::Africa::Casablanca 1.64
- DateTime::TimeZone::Africa::Ceuta 1.64
- DateTime::TimeZone::Africa::Conakry 1.64
- DateTime::TimeZone::Africa::Dakar 1.64
- DateTime::TimeZone::Africa::Dar_es_Salaam 1.64
- DateTime::TimeZone::Africa::Djibouti 1.64
- DateTime::TimeZone::Africa::Douala 1.64
- DateTime::TimeZone::Africa::El_Aaiun 1.64
- DateTime::TimeZone::Africa::Freetown 1.64
- DateTime::TimeZone::Africa::Gaborone 1.64
- DateTime::TimeZone::Africa::Harare 1.64
- DateTime::TimeZone::Africa::Johannesburg 1.64
- DateTime::TimeZone::Africa::Kampala 1.64
- DateTime::TimeZone::Africa::Khartoum 1.64
- DateTime::TimeZone::Africa::Kigali 1.64
- DateTime::TimeZone::Africa::Kinshasa 1.64
- DateTime::TimeZone::Africa::Lagos 1.64
- DateTime::TimeZone::Africa::Libreville 1.64
- DateTime::TimeZone::Africa::Lome 1.64
- DateTime::TimeZone::Africa::Luanda 1.64
- DateTime::TimeZone::Africa::Lubumbashi 1.64
- DateTime::TimeZone::Africa::Lusaka 1.64
- DateTime::TimeZone::Africa::Malabo 1.64
- DateTime::TimeZone::Africa::Maputo 1.64
- DateTime::TimeZone::Africa::Maseru 1.64
- DateTime::TimeZone::Africa::Mbabane 1.64
- DateTime::TimeZone::Africa::Mogadishu 1.64
- DateTime::TimeZone::Africa::Monrovia 1.64
- DateTime::TimeZone::Africa::Nairobi 1.64
- DateTime::TimeZone::Africa::Ndjamena 1.64
- DateTime::TimeZone::Africa::Niamey 1.64
- DateTime::TimeZone::Africa::Nouakchott 1.64
- DateTime::TimeZone::Africa::Ouagadougou 1.64
- DateTime::TimeZone::Africa::Porto_Novo 1.64
- DateTime::TimeZone::Africa::Sao_Tome 1.64
- DateTime::TimeZone::Africa::Tripoli 1.64
- DateTime::TimeZone::Africa::Tunis 1.64
- DateTime::TimeZone::Africa::Windhoek 1.64
- DateTime::TimeZone::America::Adak 1.64
- DateTime::TimeZone::America::Anchorage 1.64
- DateTime::TimeZone::America::Antigua 1.64
- DateTime::TimeZone::America::Araguaina 1.64
- DateTime::TimeZone::America::Argentina::Buenos_Aires 1.64
- DateTime::TimeZone::America::Argentina::Catamarca 1.64
- DateTime::TimeZone::America::Argentina::Cordoba 1.64
- DateTime::TimeZone::America::Argentina::Jujuy 1.64
- DateTime::TimeZone::America::Argentina::La_Rioja 1.64
- DateTime::TimeZone::America::Argentina::Mendoza 1.64
- DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.64
- DateTime::TimeZone::America::Argentina::Salta 1.64
- DateTime::TimeZone::America::Argentina::San_Juan 1.64
- DateTime::TimeZone::America::Argentina::San_Luis 1.64
- DateTime::TimeZone::America::Argentina::Tucuman 1.64
- DateTime::TimeZone::America::Argentina::Ushuaia 1.64
- DateTime::TimeZone::America::Asuncion 1.64
- DateTime::TimeZone::America::Atikokan 1.64
- DateTime::TimeZone::America::Bahia 1.64
- DateTime::TimeZone::America::Bahia_Banderas 1.64
- DateTime::TimeZone::America::Barbados 1.64
- DateTime::TimeZone::America::Belem 1.64
- DateTime::TimeZone::America::Belize 1.64
- DateTime::TimeZone::America::Blanc_Sablon 1.64
- DateTime::TimeZone::America::Boa_Vista 1.64
- DateTime::TimeZone::America::Bogota 1.64
- DateTime::TimeZone::America::Boise 1.64
- DateTime::TimeZone::America::Cambridge_Bay 1.64
- DateTime::TimeZone::America::Campo_Grande 1.64
- DateTime::TimeZone::America::Cancun 1.64
- DateTime::TimeZone::America::Caracas 1.64
- DateTime::TimeZone::America::Cayenne 1.64
- DateTime::TimeZone::America::Cayman 1.64
- DateTime::TimeZone::America::Chicago 1.64
- DateTime::TimeZone::America::Chihuahua 1.64
- DateTime::TimeZone::America::Costa_Rica 1.64
- DateTime::TimeZone::America::Creston 1.64
- DateTime::TimeZone::America::Cuiaba 1.64
- DateTime::TimeZone::America::Curacao 1.64
- DateTime::TimeZone::America::Danmarkshavn 1.64
- DateTime::TimeZone::America::Dawson 1.64
- DateTime::TimeZone::America::Dawson_Creek 1.64
- DateTime::TimeZone::America::Denver 1.64
- DateTime::TimeZone::America::Detroit 1.64
- DateTime::TimeZone::America::Edmonton 1.64
- DateTime::TimeZone::America::Eirunepe 1.64
- DateTime::TimeZone::America::El_Salvador 1.64
- DateTime::TimeZone::America::Fortaleza 1.64
- DateTime::TimeZone::America::Glace_Bay 1.64
- DateTime::TimeZone::America::Godthab 1.64
- DateTime::TimeZone::America::Goose_Bay 1.64
- DateTime::TimeZone::America::Grand_Turk 1.64
- DateTime::TimeZone::America::Guatemala 1.64
- DateTime::TimeZone::America::Guayaquil 1.64
- DateTime::TimeZone::America::Guyana 1.64
- DateTime::TimeZone::America::Halifax 1.64
- DateTime::TimeZone::America::Havana 1.64
- DateTime::TimeZone::America::Hermosillo 1.64
- DateTime::TimeZone::America::Indiana::Indianapolis 1.64
- DateTime::TimeZone::America::Indiana::Knox 1.64
- DateTime::TimeZone::America::Indiana::Marengo 1.64
- DateTime::TimeZone::America::Indiana::Petersburg 1.64
- DateTime::TimeZone::America::Indiana::Tell_City 1.64
- DateTime::TimeZone::America::Indiana::Vevay 1.64
- DateTime::TimeZone::America::Indiana::Vincennes 1.64
- DateTime::TimeZone::America::Indiana::Winamac 1.64
- DateTime::TimeZone::America::Inuvik 1.64
- DateTime::TimeZone::America::Iqaluit 1.64
- DateTime::TimeZone::America::Jamaica 1.64
- DateTime::TimeZone::America::Juneau 1.64
- DateTime::TimeZone::America::Kentucky::Louisville 1.64
- DateTime::TimeZone::America::Kentucky::Monticello 1.64
- DateTime::TimeZone::America::La_Paz 1.64
- DateTime::TimeZone::America::Lima 1.64
- DateTime::TimeZone::America::Los_Angeles 1.64
- DateTime::TimeZone::America::Maceio 1.64
- DateTime::TimeZone::America::Managua 1.64
- DateTime::TimeZone::America::Manaus 1.64
- DateTime::TimeZone::America::Martinique 1.64
- DateTime::TimeZone::America::Matamoros 1.64
- DateTime::TimeZone::America::Mazatlan 1.64
- DateTime::TimeZone::America::Menominee 1.64
- DateTime::TimeZone::America::Merida 1.64
- DateTime::TimeZone::America::Metlakatla 1.64
- DateTime::TimeZone::America::Mexico_City 1.64
- DateTime::TimeZone::America::Miquelon 1.64
- DateTime::TimeZone::America::Moncton 1.64
- DateTime::TimeZone::America::Monterrey 1.64
- DateTime::TimeZone::America::Montevideo 1.64
- DateTime::TimeZone::America::Montreal 1.64
- DateTime::TimeZone::America::Nassau 1.64
- DateTime::TimeZone::America::New_York 1.64
- DateTime::TimeZone::America::Nipigon 1.64
- DateTime::TimeZone::America::Nome 1.64
- DateTime::TimeZone::America::Noronha 1.64
- DateTime::TimeZone::America::North_Dakota::Beulah 1.64
- DateTime::TimeZone::America::North_Dakota::Center 1.64
- DateTime::TimeZone::America::North_Dakota::New_Salem 1.64
- DateTime::TimeZone::America::Ojinaga 1.64
- DateTime::TimeZone::America::Panama 1.64
- DateTime::TimeZone::America::Pangnirtung 1.64
- DateTime::TimeZone::America::Paramaribo 1.64
- DateTime::TimeZone::America::Phoenix 1.64
- DateTime::TimeZone::America::Port_au_Prince 1.64
- DateTime::TimeZone::America::Port_of_Spain 1.64
- DateTime::TimeZone::America::Porto_Velho 1.64
- DateTime::TimeZone::America::Puerto_Rico 1.64
- DateTime::TimeZone::America::Rainy_River 1.64
- DateTime::TimeZone::America::Rankin_Inlet 1.64
- DateTime::TimeZone::America::Recife 1.64
- DateTime::TimeZone::America::Regina 1.64
- DateTime::TimeZone::America::Resolute 1.64
- DateTime::TimeZone::America::Rio_Branco 1.64
- DateTime::TimeZone::America::Santa_Isabel 1.64
- DateTime::TimeZone::America::Santarem 1.64
- DateTime::TimeZone::America::Santiago 1.64
- DateTime::TimeZone::America::Santo_Domingo 1.64
- DateTime::TimeZone::America::Sao_Paulo 1.64
- DateTime::TimeZone::America::Scoresbysund 1.64
- DateTime::TimeZone::America::Sitka 1.64
- DateTime::TimeZone::America::St_Johns 1.64
- DateTime::TimeZone::America::Swift_Current 1.64
- DateTime::TimeZone::America::Tegucigalpa 1.64
- DateTime::TimeZone::America::Thule 1.64
- DateTime::TimeZone::America::Thunder_Bay 1.64
- DateTime::TimeZone::America::Tijuana 1.64
- DateTime::TimeZone::America::Toronto 1.64
- DateTime::TimeZone::America::Vancouver 1.64
- DateTime::TimeZone::America::Whitehorse 1.64
- DateTime::TimeZone::America::Winnipeg 1.64
- DateTime::TimeZone::America::Yakutat 1.64
- DateTime::TimeZone::America::Yellowknife 1.64
- DateTime::TimeZone::Antarctica::Casey 1.64
- DateTime::TimeZone::Antarctica::Davis 1.64
- DateTime::TimeZone::Antarctica::DumontDUrville 1.64
- DateTime::TimeZone::Antarctica::Macquarie 1.64
- DateTime::TimeZone::Antarctica::Mawson 1.64
- DateTime::TimeZone::Antarctica::Palmer 1.64
- DateTime::TimeZone::Antarctica::Rothera 1.64
- DateTime::TimeZone::Antarctica::Syowa 1.64
- DateTime::TimeZone::Antarctica::Vostok 1.64
- DateTime::TimeZone::Asia::Aden 1.64
- DateTime::TimeZone::Asia::Almaty 1.64
- DateTime::TimeZone::Asia::Amman 1.64
- DateTime::TimeZone::Asia::Anadyr 1.64
- DateTime::TimeZone::Asia::Aqtau 1.64
- DateTime::TimeZone::Asia::Aqtobe 1.64
- DateTime::TimeZone::Asia::Ashgabat 1.64
- DateTime::TimeZone::Asia::Baghdad 1.64
- DateTime::TimeZone::Asia::Bahrain 1.64
- DateTime::TimeZone::Asia::Baku 1.64
- DateTime::TimeZone::Asia::Bangkok 1.64
- DateTime::TimeZone::Asia::Beirut 1.64
- DateTime::TimeZone::Asia::Bishkek 1.64
- DateTime::TimeZone::Asia::Brunei 1.64
- DateTime::TimeZone::Asia::Choibalsan 1.64
- DateTime::TimeZone::Asia::Chongqing 1.64
- DateTime::TimeZone::Asia::Colombo 1.64
- DateTime::TimeZone::Asia::Damascus 1.64
- DateTime::TimeZone::Asia::Dhaka 1.64
- DateTime::TimeZone::Asia::Dili 1.64
- DateTime::TimeZone::Asia::Dubai 1.64
- DateTime::TimeZone::Asia::Dushanbe 1.64
- DateTime::TimeZone::Asia::Gaza 1.64
- DateTime::TimeZone::Asia::Harbin 1.64
- DateTime::TimeZone::Asia::Hebron 1.64
- DateTime::TimeZone::Asia::Ho_Chi_Minh 1.64
- DateTime::TimeZone::Asia::Hong_Kong 1.64
- DateTime::TimeZone::Asia::Hovd 1.64
- DateTime::TimeZone::Asia::Irkutsk 1.64
- DateTime::TimeZone::Asia::Jakarta 1.64
- DateTime::TimeZone::Asia::Jayapura 1.64
- DateTime::TimeZone::Asia::Jerusalem 1.64
- DateTime::TimeZone::Asia::Kabul 1.64
- DateTime::TimeZone::Asia::Kamchatka 1.64
- DateTime::TimeZone::Asia::Karachi 1.64
- DateTime::TimeZone::Asia::Kashgar 1.64
- DateTime::TimeZone::Asia::Kathmandu 1.64
- DateTime::TimeZone::Asia::Khandyga 1.64
- DateTime::TimeZone::Asia::Kolkata 1.64
- DateTime::TimeZone::Asia::Krasnoyarsk 1.64
- DateTime::TimeZone::Asia::Kuala_Lumpur 1.64
- DateTime::TimeZone::Asia::Kuching 1.64
- DateTime::TimeZone::Asia::Kuwait 1.64
- DateTime::TimeZone::Asia::Macau 1.64
- DateTime::TimeZone::Asia::Magadan 1.64
- DateTime::TimeZone::Asia::Makassar 1.64
- DateTime::TimeZone::Asia::Manila 1.64
- DateTime::TimeZone::Asia::Muscat 1.64
- DateTime::TimeZone::Asia::Nicosia 1.64
- DateTime::TimeZone::Asia::Novokuznetsk 1.64
- DateTime::TimeZone::Asia::Novosibirsk 1.64
- DateTime::TimeZone::Asia::Omsk 1.64
- DateTime::TimeZone::Asia::Oral 1.64
- DateTime::TimeZone::Asia::Phnom_Penh 1.64
- DateTime::TimeZone::Asia::Pontianak 1.64
- DateTime::TimeZone::Asia::Pyongyang 1.64
- DateTime::TimeZone::Asia::Qatar 1.64
- DateTime::TimeZone::Asia::Qyzylorda 1.64
- DateTime::TimeZone::Asia::Rangoon 1.64
- DateTime::TimeZone::Asia::Riyadh 1.64
- DateTime::TimeZone::Asia::Sakhalin 1.64
- DateTime::TimeZone::Asia::Samarkand 1.64
- DateTime::TimeZone::Asia::Seoul 1.64
- DateTime::TimeZone::Asia::Shanghai 1.64
- DateTime::TimeZone::Asia::Singapore 1.64
- DateTime::TimeZone::Asia::Taipei 1.64
- DateTime::TimeZone::Asia::Tashkent 1.64
- DateTime::TimeZone::Asia::Tbilisi 1.64
- DateTime::TimeZone::Asia::Tehran 1.64
- DateTime::TimeZone::Asia::Thimphu 1.64
- DateTime::TimeZone::Asia::Tokyo 1.64
- DateTime::TimeZone::Asia::Ulaanbaatar 1.64
- DateTime::TimeZone::Asia::Urumqi 1.64
- DateTime::TimeZone::Asia::Ust_Nera 1.64
- DateTime::TimeZone::Asia::Vientiane 1.64
- DateTime::TimeZone::Asia::Vladivostok 1.64
- DateTime::TimeZone::Asia::Yakutsk 1.64
- DateTime::TimeZone::Asia::Yekaterinburg 1.64
- DateTime::TimeZone::Asia::Yerevan 1.64
- DateTime::TimeZone::Atlantic::Azores 1.64
- DateTime::TimeZone::Atlantic::Bermuda 1.64
- DateTime::TimeZone::Atlantic::Canary 1.64
- DateTime::TimeZone::Atlantic::Cape_Verde 1.64
- DateTime::TimeZone::Atlantic::Faroe 1.64
- DateTime::TimeZone::Atlantic::Madeira 1.64
- DateTime::TimeZone::Atlantic::Reykjavik 1.64
- DateTime::TimeZone::Atlantic::South_Georgia 1.64
- DateTime::TimeZone::Atlantic::St_Helena 1.64
- DateTime::TimeZone::Atlantic::Stanley 1.64
- DateTime::TimeZone::Australia::Adelaide 1.64
- DateTime::TimeZone::Australia::Brisbane 1.64
- DateTime::TimeZone::Australia::Broken_Hill 1.64
- DateTime::TimeZone::Australia::Currie 1.64
- DateTime::TimeZone::Australia::Darwin 1.64
- DateTime::TimeZone::Australia::Eucla 1.64
- DateTime::TimeZone::Australia::Hobart 1.64
- DateTime::TimeZone::Australia::Lindeman 1.64
- DateTime::TimeZone::Australia::Lord_Howe 1.64
- DateTime::TimeZone::Australia::Melbourne 1.64
- DateTime::TimeZone::Australia::Perth 1.64
- DateTime::TimeZone::Australia::Sydney 1.64
- DateTime::TimeZone::CET 1.64
- DateTime::TimeZone::CST6CDT 1.64
- DateTime::TimeZone::Catalog 1.64
- DateTime::TimeZone::EET 1.64
- DateTime::TimeZone::EST 1.64
- DateTime::TimeZone::EST5EDT 1.64
- DateTime::TimeZone::Europe::Amsterdam 1.64
- DateTime::TimeZone::Europe::Andorra 1.64
- DateTime::TimeZone::Europe::Athens 1.64
- DateTime::TimeZone::Europe::Belgrade 1.64
- DateTime::TimeZone::Europe::Berlin 1.64
- DateTime::TimeZone::Europe::Brussels 1.64
- DateTime::TimeZone::Europe::Bucharest 1.64
- DateTime::TimeZone::Europe::Budapest 1.64
- DateTime::TimeZone::Europe::Chisinau 1.64
- DateTime::TimeZone::Europe::Copenhagen 1.64
- DateTime::TimeZone::Europe::Dublin 1.64
- DateTime::TimeZone::Europe::Gibraltar 1.64
- DateTime::TimeZone::Europe::Helsinki 1.64
- DateTime::TimeZone::Europe::Istanbul 1.64
- DateTime::TimeZone::Europe::Kaliningrad 1.64
- DateTime::TimeZone::Europe::Kiev 1.64
- DateTime::TimeZone::Europe::Lisbon 1.64
- DateTime::TimeZone::Europe::London 1.64
- DateTime::TimeZone::Europe::Luxembourg 1.64
- DateTime::TimeZone::Europe::Madrid 1.64
- DateTime::TimeZone::Europe::Malta 1.64
- DateTime::TimeZone::Europe::Minsk 1.64
- DateTime::TimeZone::Europe::Monaco 1.64
- DateTime::TimeZone::Europe::Moscow 1.64
- DateTime::TimeZone::Europe::Oslo 1.64
- DateTime::TimeZone::Europe::Paris 1.64
- DateTime::TimeZone::Europe::Prague 1.64
- DateTime::TimeZone::Europe::Riga 1.64
- DateTime::TimeZone::Europe::Rome 1.64
- DateTime::TimeZone::Europe::Samara 1.64
- DateTime::TimeZone::Europe::Simferopol 1.64
- DateTime::TimeZone::Europe::Sofia 1.64
- DateTime::TimeZone::Europe::Stockholm 1.64
- DateTime::TimeZone::Europe::Tallinn 1.64
- DateTime::TimeZone::Europe::Tirane 1.64
- DateTime::TimeZone::Europe::Uzhgorod 1.64
- DateTime::TimeZone::Europe::Vienna 1.64
- DateTime::TimeZone::Europe::Vilnius 1.64
- DateTime::TimeZone::Europe::Volgograd 1.64
- DateTime::TimeZone::Europe::Warsaw 1.64
- DateTime::TimeZone::Europe::Zaporozhye 1.64
- DateTime::TimeZone::Europe::Zurich 1.64
- DateTime::TimeZone::Floating 1.64
- DateTime::TimeZone::HST 1.64
- DateTime::TimeZone::Indian::Antananarivo 1.64
- DateTime::TimeZone::Indian::Chagos 1.64
- DateTime::TimeZone::Indian::Christmas 1.64
- DateTime::TimeZone::Indian::Cocos 1.64
- DateTime::TimeZone::Indian::Comoro 1.64
- DateTime::TimeZone::Indian::Kerguelen 1.64
- DateTime::TimeZone::Indian::Mahe 1.64
- DateTime::TimeZone::Indian::Maldives 1.64
- DateTime::TimeZone::Indian::Mauritius 1.64
- DateTime::TimeZone::Indian::Mayotte 1.64
- DateTime::TimeZone::Indian::Reunion 1.64
- DateTime::TimeZone::Local 1.64
- DateTime::TimeZone::Local::Unix 1.64
- DateTime::TimeZone::Local::VMS 1.64
- DateTime::TimeZone::Local::Win32 1.64
- DateTime::TimeZone::MET 1.64
- DateTime::TimeZone::MST 1.64
- DateTime::TimeZone::MST7MDT 1.64
- DateTime::TimeZone::OffsetOnly 1.64
- DateTime::TimeZone::OlsonDB 1.64
- DateTime::TimeZone::OlsonDB::Change 1.64
- DateTime::TimeZone::OlsonDB::Observance 1.64
- DateTime::TimeZone::OlsonDB::Rule 1.64
- DateTime::TimeZone::OlsonDB::Zone 1.64
- DateTime::TimeZone::PST8PDT 1.64
- DateTime::TimeZone::Pacific::Apia 1.64
- DateTime::TimeZone::Pacific::Auckland 1.64
- DateTime::TimeZone::Pacific::Chatham 1.64
- DateTime::TimeZone::Pacific::Chuuk 1.64
- DateTime::TimeZone::Pacific::Easter 1.64
- DateTime::TimeZone::Pacific::Efate 1.64
- DateTime::TimeZone::Pacific::Enderbury 1.64
- DateTime::TimeZone::Pacific::Fakaofo 1.64
- DateTime::TimeZone::Pacific::Fiji 1.64
- DateTime::TimeZone::Pacific::Funafuti 1.64
- DateTime::TimeZone::Pacific::Galapagos 1.64
- DateTime::TimeZone::Pacific::Gambier 1.64
- DateTime::TimeZone::Pacific::Guadalcanal 1.64
- DateTime::TimeZone::Pacific::Guam 1.64
- DateTime::TimeZone::Pacific::Honolulu 1.64
- DateTime::TimeZone::Pacific::Kiritimati 1.64
- DateTime::TimeZone::Pacific::Kosrae 1.64
- DateTime::TimeZone::Pacific::Kwajalein 1.64
- DateTime::TimeZone::Pacific::Majuro 1.64
- DateTime::TimeZone::Pacific::Marquesas 1.64
- DateTime::TimeZone::Pacific::Midway 1.64
- DateTime::TimeZone::Pacific::Nauru 1.64
- DateTime::TimeZone::Pacific::Niue 1.64
- DateTime::TimeZone::Pacific::Norfolk 1.64
- DateTime::TimeZone::Pacific::Noumea 1.64
- DateTime::TimeZone::Pacific::Pago_Pago 1.64
- DateTime::TimeZone::Pacific::Palau 1.64
- DateTime::TimeZone::Pacific::Pitcairn 1.64
- DateTime::TimeZone::Pacific::Pohnpei 1.64
- DateTime::TimeZone::Pacific::Port_Moresby 1.64
- DateTime::TimeZone::Pacific::Rarotonga 1.64
- DateTime::TimeZone::Pacific::Saipan 1.64
- DateTime::TimeZone::Pacific::Tahiti 1.64
- DateTime::TimeZone::Pacific::Tarawa 1.64
- DateTime::TimeZone::Pacific::Tongatapu 1.64
- DateTime::TimeZone::Pacific::Wake 1.64
- DateTime::TimeZone::Pacific::Wallis 1.64
- DateTime::TimeZone::UTC 1.64
- DateTime::TimeZone::WET 1.64
+ DateTime::TimeZone 1.83
+ DateTime::TimeZone::Africa::Abidjan 1.83
+ DateTime::TimeZone::Africa::Accra 1.83
+ DateTime::TimeZone::Africa::Algiers 1.83
+ DateTime::TimeZone::Africa::Bissau 1.83
+ DateTime::TimeZone::Africa::Cairo 1.83
+ DateTime::TimeZone::Africa::Casablanca 1.83
+ DateTime::TimeZone::Africa::Ceuta 1.83
+ DateTime::TimeZone::Africa::El_Aaiun 1.83
+ DateTime::TimeZone::Africa::Johannesburg 1.83
+ DateTime::TimeZone::Africa::Khartoum 1.83
+ DateTime::TimeZone::Africa::Lagos 1.83
+ DateTime::TimeZone::Africa::Maputo 1.83
+ DateTime::TimeZone::Africa::Monrovia 1.83
+ DateTime::TimeZone::Africa::Nairobi 1.83
+ DateTime::TimeZone::Africa::Ndjamena 1.83
+ DateTime::TimeZone::Africa::Tripoli 1.83
+ DateTime::TimeZone::Africa::Tunis 1.83
+ DateTime::TimeZone::Africa::Windhoek 1.83
+ DateTime::TimeZone::America::Adak 1.83
+ DateTime::TimeZone::America::Anchorage 1.83
+ DateTime::TimeZone::America::Antigua 1.83
+ DateTime::TimeZone::America::Araguaina 1.83
+ DateTime::TimeZone::America::Argentina::Buenos_Aires 1.83
+ DateTime::TimeZone::America::Argentina::Catamarca 1.83
+ DateTime::TimeZone::America::Argentina::Cordoba 1.83
+ DateTime::TimeZone::America::Argentina::Jujuy 1.83
+ DateTime::TimeZone::America::Argentina::La_Rioja 1.83
+ DateTime::TimeZone::America::Argentina::Mendoza 1.83
+ DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.83
+ DateTime::TimeZone::America::Argentina::Salta 1.83
+ DateTime::TimeZone::America::Argentina::San_Juan 1.83
+ DateTime::TimeZone::America::Argentina::San_Luis 1.83
+ DateTime::TimeZone::America::Argentina::Tucuman 1.83
+ DateTime::TimeZone::America::Argentina::Ushuaia 1.83
+ DateTime::TimeZone::America::Asuncion 1.83
+ DateTime::TimeZone::America::Atikokan 1.83
+ DateTime::TimeZone::America::Bahia 1.83
+ DateTime::TimeZone::America::Bahia_Banderas 1.83
+ DateTime::TimeZone::America::Barbados 1.83
+ DateTime::TimeZone::America::Belem 1.83
+ DateTime::TimeZone::America::Belize 1.83
+ DateTime::TimeZone::America::Blanc_Sablon 1.83
+ DateTime::TimeZone::America::Boa_Vista 1.83
+ DateTime::TimeZone::America::Bogota 1.83
+ DateTime::TimeZone::America::Boise 1.83
+ DateTime::TimeZone::America::Cambridge_Bay 1.83
+ DateTime::TimeZone::America::Campo_Grande 1.83
+ DateTime::TimeZone::America::Cancun 1.83
+ DateTime::TimeZone::America::Caracas 1.83
+ DateTime::TimeZone::America::Cayenne 1.83
+ DateTime::TimeZone::America::Cayman 1.83
+ DateTime::TimeZone::America::Chicago 1.83
+ DateTime::TimeZone::America::Chihuahua 1.83
+ DateTime::TimeZone::America::Costa_Rica 1.83
+ DateTime::TimeZone::America::Creston 1.83
+ DateTime::TimeZone::America::Cuiaba 1.83
+ DateTime::TimeZone::America::Curacao 1.83
+ DateTime::TimeZone::America::Danmarkshavn 1.83
+ DateTime::TimeZone::America::Dawson 1.83
+ DateTime::TimeZone::America::Dawson_Creek 1.83
+ DateTime::TimeZone::America::Denver 1.83
+ DateTime::TimeZone::America::Detroit 1.83
+ DateTime::TimeZone::America::Edmonton 1.83
+ DateTime::TimeZone::America::Eirunepe 1.83
+ DateTime::TimeZone::America::El_Salvador 1.83
+ DateTime::TimeZone::America::Fortaleza 1.83
+ DateTime::TimeZone::America::Glace_Bay 1.83
+ DateTime::TimeZone::America::Godthab 1.83
+ DateTime::TimeZone::America::Goose_Bay 1.83
+ DateTime::TimeZone::America::Grand_Turk 1.83
+ DateTime::TimeZone::America::Guatemala 1.83
+ DateTime::TimeZone::America::Guayaquil 1.83
+ DateTime::TimeZone::America::Guyana 1.83
+ DateTime::TimeZone::America::Halifax 1.83
+ DateTime::TimeZone::America::Havana 1.83
+ DateTime::TimeZone::America::Hermosillo 1.83
+ DateTime::TimeZone::America::Indiana::Indianapolis 1.83
+ DateTime::TimeZone::America::Indiana::Knox 1.83
+ DateTime::TimeZone::America::Indiana::Marengo 1.83
+ DateTime::TimeZone::America::Indiana::Petersburg 1.83
+ DateTime::TimeZone::America::Indiana::Tell_City 1.83
+ DateTime::TimeZone::America::Indiana::Vevay 1.83
+ DateTime::TimeZone::America::Indiana::Vincennes 1.83
+ DateTime::TimeZone::America::Indiana::Winamac 1.83
+ DateTime::TimeZone::America::Inuvik 1.83
+ DateTime::TimeZone::America::Iqaluit 1.83
+ DateTime::TimeZone::America::Jamaica 1.83
+ DateTime::TimeZone::America::Juneau 1.83
+ DateTime::TimeZone::America::Kentucky::Louisville 1.83
+ DateTime::TimeZone::America::Kentucky::Monticello 1.83
+ DateTime::TimeZone::America::La_Paz 1.83
+ DateTime::TimeZone::America::Lima 1.83
+ DateTime::TimeZone::America::Los_Angeles 1.83
+ DateTime::TimeZone::America::Maceio 1.83
+ DateTime::TimeZone::America::Managua 1.83
+ DateTime::TimeZone::America::Manaus 1.83
+ DateTime::TimeZone::America::Martinique 1.83
+ DateTime::TimeZone::America::Matamoros 1.83
+ DateTime::TimeZone::America::Mazatlan 1.83
+ DateTime::TimeZone::America::Menominee 1.83
+ DateTime::TimeZone::America::Merida 1.83
+ DateTime::TimeZone::America::Metlakatla 1.83
+ DateTime::TimeZone::America::Mexico_City 1.83
+ DateTime::TimeZone::America::Miquelon 1.83
+ DateTime::TimeZone::America::Moncton 1.83
+ DateTime::TimeZone::America::Monterrey 1.83
+ DateTime::TimeZone::America::Montevideo 1.83
+ DateTime::TimeZone::America::Montreal 1.83
+ DateTime::TimeZone::America::Nassau 1.83
+ DateTime::TimeZone::America::New_York 1.83
+ DateTime::TimeZone::America::Nipigon 1.83
+ DateTime::TimeZone::America::Nome 1.83
+ DateTime::TimeZone::America::Noronha 1.83
+ DateTime::TimeZone::America::North_Dakota::Beulah 1.83
+ DateTime::TimeZone::America::North_Dakota::Center 1.83
+ DateTime::TimeZone::America::North_Dakota::New_Salem 1.83
+ DateTime::TimeZone::America::Ojinaga 1.83
+ DateTime::TimeZone::America::Panama 1.83
+ DateTime::TimeZone::America::Pangnirtung 1.83
+ DateTime::TimeZone::America::Paramaribo 1.83
+ DateTime::TimeZone::America::Phoenix 1.83
+ DateTime::TimeZone::America::Port_au_Prince 1.83
+ DateTime::TimeZone::America::Port_of_Spain 1.83
+ DateTime::TimeZone::America::Porto_Velho 1.83
+ DateTime::TimeZone::America::Puerto_Rico 1.83
+ DateTime::TimeZone::America::Rainy_River 1.83
+ DateTime::TimeZone::America::Rankin_Inlet 1.83
+ DateTime::TimeZone::America::Recife 1.83
+ DateTime::TimeZone::America::Regina 1.83
+ DateTime::TimeZone::America::Resolute 1.83
+ DateTime::TimeZone::America::Rio_Branco 1.83
+ DateTime::TimeZone::America::Santa_Isabel 1.83
+ DateTime::TimeZone::America::Santarem 1.83
+ DateTime::TimeZone::America::Santiago 1.83
+ DateTime::TimeZone::America::Santo_Domingo 1.83
+ DateTime::TimeZone::America::Sao_Paulo 1.83
+ DateTime::TimeZone::America::Scoresbysund 1.83
+ DateTime::TimeZone::America::Sitka 1.83
+ DateTime::TimeZone::America::St_Johns 1.83
+ DateTime::TimeZone::America::Swift_Current 1.83
+ DateTime::TimeZone::America::Tegucigalpa 1.83
+ DateTime::TimeZone::America::Thule 1.83
+ DateTime::TimeZone::America::Thunder_Bay 1.83
+ DateTime::TimeZone::America::Tijuana 1.83
+ DateTime::TimeZone::America::Toronto 1.83
+ DateTime::TimeZone::America::Vancouver 1.83
+ DateTime::TimeZone::America::Whitehorse 1.83
+ DateTime::TimeZone::America::Winnipeg 1.83
+ DateTime::TimeZone::America::Yakutat 1.83
+ DateTime::TimeZone::America::Yellowknife 1.83
+ DateTime::TimeZone::Antarctica::Casey 1.83
+ DateTime::TimeZone::Antarctica::Davis 1.83
+ DateTime::TimeZone::Antarctica::DumontDUrville 1.83
+ DateTime::TimeZone::Antarctica::Macquarie 1.83
+ DateTime::TimeZone::Antarctica::Mawson 1.83
+ DateTime::TimeZone::Antarctica::Palmer 1.83
+ DateTime::TimeZone::Antarctica::Rothera 1.83
+ DateTime::TimeZone::Antarctica::Syowa 1.83
+ DateTime::TimeZone::Antarctica::Troll 1.83
+ DateTime::TimeZone::Antarctica::Vostok 1.83
+ DateTime::TimeZone::Asia::Aden 1.83
+ DateTime::TimeZone::Asia::Almaty 1.83
+ DateTime::TimeZone::Asia::Amman 1.83
+ DateTime::TimeZone::Asia::Anadyr 1.83
+ DateTime::TimeZone::Asia::Aqtau 1.83
+ DateTime::TimeZone::Asia::Aqtobe 1.83
+ DateTime::TimeZone::Asia::Ashgabat 1.83
+ DateTime::TimeZone::Asia::Baghdad 1.83
+ DateTime::TimeZone::Asia::Bahrain 1.83
+ DateTime::TimeZone::Asia::Baku 1.83
+ DateTime::TimeZone::Asia::Bangkok 1.83
+ DateTime::TimeZone::Asia::Beirut 1.83
+ DateTime::TimeZone::Asia::Bishkek 1.83
+ DateTime::TimeZone::Asia::Brunei 1.83
+ DateTime::TimeZone::Asia::Chita 1.83
+ DateTime::TimeZone::Asia::Choibalsan 1.83
+ DateTime::TimeZone::Asia::Colombo 1.83
+ DateTime::TimeZone::Asia::Damascus 1.83
+ DateTime::TimeZone::Asia::Dhaka 1.83
+ DateTime::TimeZone::Asia::Dili 1.83
+ DateTime::TimeZone::Asia::Dubai 1.83
+ DateTime::TimeZone::Asia::Dushanbe 1.83
+ DateTime::TimeZone::Asia::Gaza 1.83
+ DateTime::TimeZone::Asia::Hebron 1.83
+ DateTime::TimeZone::Asia::Ho_Chi_Minh 1.83
+ DateTime::TimeZone::Asia::Hong_Kong 1.83
+ DateTime::TimeZone::Asia::Hovd 1.83
+ DateTime::TimeZone::Asia::Irkutsk 1.83
+ DateTime::TimeZone::Asia::Jakarta 1.83
+ DateTime::TimeZone::Asia::Jayapura 1.83
+ DateTime::TimeZone::Asia::Jerusalem 1.83
+ DateTime::TimeZone::Asia::Kabul 1.83
+ DateTime::TimeZone::Asia::Kamchatka 1.83
+ DateTime::TimeZone::Asia::Karachi 1.83
+ DateTime::TimeZone::Asia::Kathmandu 1.83
+ DateTime::TimeZone::Asia::Khandyga 1.83
+ DateTime::TimeZone::Asia::Kolkata 1.83
+ DateTime::TimeZone::Asia::Krasnoyarsk 1.83
+ DateTime::TimeZone::Asia::Kuala_Lumpur 1.83
+ DateTime::TimeZone::Asia::Kuching 1.83
+ DateTime::TimeZone::Asia::Kuwait 1.83
+ DateTime::TimeZone::Asia::Macau 1.83
+ DateTime::TimeZone::Asia::Magadan 1.83
+ DateTime::TimeZone::Asia::Makassar 1.83
+ DateTime::TimeZone::Asia::Manila 1.83
+ DateTime::TimeZone::Asia::Muscat 1.83
+ DateTime::TimeZone::Asia::Nicosia 1.83
+ DateTime::TimeZone::Asia::Novokuznetsk 1.83
+ DateTime::TimeZone::Asia::Novosibirsk 1.83
+ DateTime::TimeZone::Asia::Omsk 1.83
+ DateTime::TimeZone::Asia::Oral 1.83
+ DateTime::TimeZone::Asia::Pontianak 1.83
+ DateTime::TimeZone::Asia::Pyongyang 1.83
+ DateTime::TimeZone::Asia::Qatar 1.83
+ DateTime::TimeZone::Asia::Qyzylorda 1.83
+ DateTime::TimeZone::Asia::Rangoon 1.83
+ DateTime::TimeZone::Asia::Riyadh 1.83
+ DateTime::TimeZone::Asia::Sakhalin 1.83
+ DateTime::TimeZone::Asia::Samarkand 1.83
+ DateTime::TimeZone::Asia::Seoul 1.83
+ DateTime::TimeZone::Asia::Shanghai 1.83
+ DateTime::TimeZone::Asia::Singapore 1.83
+ DateTime::TimeZone::Asia::Srednekolymsk 1.83
+ DateTime::TimeZone::Asia::Taipei 1.83
+ DateTime::TimeZone::Asia::Tashkent 1.83
+ DateTime::TimeZone::Asia::Tbilisi 1.83
+ DateTime::TimeZone::Asia::Tehran 1.83
+ DateTime::TimeZone::Asia::Thimphu 1.83
+ DateTime::TimeZone::Asia::Tokyo 1.83
+ DateTime::TimeZone::Asia::Ulaanbaatar 1.83
+ DateTime::TimeZone::Asia::Urumqi 1.83
+ DateTime::TimeZone::Asia::Ust_Nera 1.83
+ DateTime::TimeZone::Asia::Vladivostok 1.83
+ DateTime::TimeZone::Asia::Yakutsk 1.83
+ DateTime::TimeZone::Asia::Yekaterinburg 1.83
+ DateTime::TimeZone::Asia::Yerevan 1.83
+ DateTime::TimeZone::Atlantic::Azores 1.83
+ DateTime::TimeZone::Atlantic::Bermuda 1.83
+ DateTime::TimeZone::Atlantic::Canary 1.83
+ DateTime::TimeZone::Atlantic::Cape_Verde 1.83
+ DateTime::TimeZone::Atlantic::Faroe 1.83
+ DateTime::TimeZone::Atlantic::Madeira 1.83
+ DateTime::TimeZone::Atlantic::Reykjavik 1.83
+ DateTime::TimeZone::Atlantic::South_Georgia 1.83
+ DateTime::TimeZone::Atlantic::Stanley 1.83
+ DateTime::TimeZone::Australia::Adelaide 1.83
+ DateTime::TimeZone::Australia::Brisbane 1.83
+ DateTime::TimeZone::Australia::Broken_Hill 1.83
+ DateTime::TimeZone::Australia::Currie 1.83
+ DateTime::TimeZone::Australia::Darwin 1.83
+ DateTime::TimeZone::Australia::Eucla 1.83
+ DateTime::TimeZone::Australia::Hobart 1.83
+ DateTime::TimeZone::Australia::Lindeman 1.83
+ DateTime::TimeZone::Australia::Lord_Howe 1.83
+ DateTime::TimeZone::Australia::Melbourne 1.83
+ DateTime::TimeZone::Australia::Perth 1.83
+ DateTime::TimeZone::Australia::Sydney 1.83
+ DateTime::TimeZone::CET 1.83
+ DateTime::TimeZone::CST6CDT 1.83
+ DateTime::TimeZone::Catalog 1.83
+ DateTime::TimeZone::EET 1.83
+ DateTime::TimeZone::EST 1.83
+ DateTime::TimeZone::EST5EDT 1.83
+ DateTime::TimeZone::Europe::Amsterdam 1.83
+ DateTime::TimeZone::Europe::Andorra 1.83
+ DateTime::TimeZone::Europe::Athens 1.83
+ DateTime::TimeZone::Europe::Belgrade 1.83
+ DateTime::TimeZone::Europe::Berlin 1.83
+ DateTime::TimeZone::Europe::Brussels 1.83
+ DateTime::TimeZone::Europe::Bucharest 1.83
+ DateTime::TimeZone::Europe::Budapest 1.83
+ DateTime::TimeZone::Europe::Chisinau 1.83
+ DateTime::TimeZone::Europe::Copenhagen 1.83
+ DateTime::TimeZone::Europe::Dublin 1.83
+ DateTime::TimeZone::Europe::Gibraltar 1.83
+ DateTime::TimeZone::Europe::Helsinki 1.83
+ DateTime::TimeZone::Europe::Istanbul 1.83
+ DateTime::TimeZone::Europe::Kaliningrad 1.83
+ DateTime::TimeZone::Europe::Kiev 1.83
+ DateTime::TimeZone::Europe::Lisbon 1.83
+ DateTime::TimeZone::Europe::London 1.83
+ DateTime::TimeZone::Europe::Luxembourg 1.83
+ DateTime::TimeZone::Europe::Madrid 1.83
+ DateTime::TimeZone::Europe::Malta 1.83
+ DateTime::TimeZone::Europe::Minsk 1.83
+ DateTime::TimeZone::Europe::Monaco 1.83
+ DateTime::TimeZone::Europe::Moscow 1.83
+ DateTime::TimeZone::Europe::Oslo 1.83
+ DateTime::TimeZone::Europe::Paris 1.83
+ DateTime::TimeZone::Europe::Prague 1.83
+ DateTime::TimeZone::Europe::Riga 1.83
+ DateTime::TimeZone::Europe::Rome 1.83
+ DateTime::TimeZone::Europe::Samara 1.83
+ DateTime::TimeZone::Europe::Simferopol 1.83
+ DateTime::TimeZone::Europe::Sofia 1.83
+ DateTime::TimeZone::Europe::Stockholm 1.83
+ DateTime::TimeZone::Europe::Tallinn 1.83
+ DateTime::TimeZone::Europe::Tirane 1.83
+ DateTime::TimeZone::Europe::Uzhgorod 1.83
+ DateTime::TimeZone::Europe::Vienna 1.83
+ DateTime::TimeZone::Europe::Vilnius 1.83
+ DateTime::TimeZone::Europe::Volgograd 1.83
+ DateTime::TimeZone::Europe::Warsaw 1.83
+ DateTime::TimeZone::Europe::Zaporozhye 1.83
+ DateTime::TimeZone::Europe::Zurich 1.83
+ DateTime::TimeZone::Floating 1.83
+ DateTime::TimeZone::HST 1.83
+ DateTime::TimeZone::Indian::Chagos 1.83
+ DateTime::TimeZone::Indian::Christmas 1.83
+ DateTime::TimeZone::Indian::Cocos 1.83
+ DateTime::TimeZone::Indian::Kerguelen 1.83
+ DateTime::TimeZone::Indian::Mahe 1.83
+ DateTime::TimeZone::Indian::Maldives 1.83
+ DateTime::TimeZone::Indian::Mauritius 1.83
+ DateTime::TimeZone::Indian::Reunion 1.83
+ DateTime::TimeZone::Local 1.83
+ DateTime::TimeZone::Local::Android 1.83
+ DateTime::TimeZone::Local::Unix 1.83
+ DateTime::TimeZone::Local::VMS 1.83
+ DateTime::TimeZone::MET 1.83
+ DateTime::TimeZone::MST 1.83
+ DateTime::TimeZone::MST7MDT 1.83
+ DateTime::TimeZone::OffsetOnly 1.83
+ DateTime::TimeZone::OlsonDB 1.83
+ DateTime::TimeZone::OlsonDB::Change 1.83
+ DateTime::TimeZone::OlsonDB::Observance 1.83
+ DateTime::TimeZone::OlsonDB::Rule 1.83
+ DateTime::TimeZone::OlsonDB::Zone 1.83
+ DateTime::TimeZone::PST8PDT 1.83
+ DateTime::TimeZone::Pacific::Apia 1.83
+ DateTime::TimeZone::Pacific::Auckland 1.83
+ DateTime::TimeZone::Pacific::Bougainville 1.83
+ DateTime::TimeZone::Pacific::Chatham 1.83
+ DateTime::TimeZone::Pacific::Chuuk 1.83
+ DateTime::TimeZone::Pacific::Easter 1.83
+ DateTime::TimeZone::Pacific::Efate 1.83
+ DateTime::TimeZone::Pacific::Enderbury 1.83
+ DateTime::TimeZone::Pacific::Fakaofo 1.83
+ DateTime::TimeZone::Pacific::Fiji 1.83
+ DateTime::TimeZone::Pacific::Funafuti 1.83
+ DateTime::TimeZone::Pacific::Galapagos 1.83
+ DateTime::TimeZone::Pacific::Gambier 1.83
+ DateTime::TimeZone::Pacific::Guadalcanal 1.83
+ DateTime::TimeZone::Pacific::Guam 1.83
+ DateTime::TimeZone::Pacific::Honolulu 1.83
+ DateTime::TimeZone::Pacific::Kiritimati 1.83
+ DateTime::TimeZone::Pacific::Kosrae 1.83
+ DateTime::TimeZone::Pacific::Kwajalein 1.83
+ DateTime::TimeZone::Pacific::Majuro 1.83
+ DateTime::TimeZone::Pacific::Marquesas 1.83
+ DateTime::TimeZone::Pacific::Midway 1.83
+ DateTime::TimeZone::Pacific::Nauru 1.83
+ DateTime::TimeZone::Pacific::Niue 1.83
+ DateTime::TimeZone::Pacific::Norfolk 1.83
+ DateTime::TimeZone::Pacific::Noumea 1.83
+ DateTime::TimeZone::Pacific::Pago_Pago 1.83
+ DateTime::TimeZone::Pacific::Palau 1.83
+ DateTime::TimeZone::Pacific::Pitcairn 1.83
+ DateTime::TimeZone::Pacific::Pohnpei 1.83
+ DateTime::TimeZone::Pacific::Port_Moresby 1.83
+ DateTime::TimeZone::Pacific::Rarotonga 1.83
+ DateTime::TimeZone::Pacific::Saipan 1.83
+ DateTime::TimeZone::Pacific::Tahiti 1.83
+ DateTime::TimeZone::Pacific::Tarawa 1.83
+ DateTime::TimeZone::Pacific::Tongatapu 1.83
+ DateTime::TimeZone::Pacific::Wake 1.83
+ DateTime::TimeZone::Pacific::Wallis 1.83
+ DateTime::TimeZone::UTC 1.83
+ DateTime::TimeZone::WET 1.83
requirements:
- Class::Load 0
Class::Singleton 1.03
Cwd 3
- ExtUtils::MakeMaker 6.30
+ ExtUtils::MakeMaker 0
File::Basename 0
File::Compare 0
File::Find 0
File::Spec 0
+ List::AllUtils 0
List::Util 0
+ Module::Runtime 0
Params::Validate 0.72
+ Try::Tiny 0
constant 0
parent 0
+ perl 5.006
strict 0
vars 0
warnings 0
- Devel-StackTrace-1.31
- pathname: D/DR/DROLSKY/Devel-StackTrace-1.31.tar.gz
+ EV-4.18
+ pathname: M/ML/MLEHMANN/EV-4.18.tar.gz
provides:
- Devel::StackTrace 1.31
- Devel::StackTrace::Frame 1.31
- requirements:
- ExtUtils::MakeMaker 6.30
- File::Spec 0
- Scalar::Util 0
- overload 0
- strict 0
- warnings 0
- Dist-CheckConflicts-0.10
- pathname: D/DO/DOY/Dist-CheckConflicts-0.10.tar.gz
- provides:
- Dist::CheckConflicts 0.10
- requirements:
- Carp 0
- Exporter 0
- ExtUtils::MakeMaker 6.30
- List::MoreUtils 0.12
- Module::Runtime 0.009
- base 0
- strict 0
- warnings 0
- EV-4.17
- pathname: M/ML/MLEHMANN/EV-4.17.tar.gz
- provides:
- EV 4.17
+ EV 4.18
EV::MakeMaker undef
requirements:
ExtUtils::MakeMaker 0
common::sense 0
- Exception-Class-1.37
- pathname: D/DR/DROLSKY/Exception-Class-1.37.tar.gz
+ Exporter-Tiny-0.042
+ pathname: T/TO/TOBYINK/Exporter-Tiny-0.042.tar.gz
provides:
- Exception::Class 1.37
- Exception::Class::Base 1.37
+ Exporter::Shiny 0.042
+ Exporter::Tiny 0.042
requirements:
- Class::Data::Inheritable 0.02
- Devel::StackTrace 1.20
- ExtUtils::MakeMaker 6.30
- File::Spec 0
- Scalar::Util 0
- Test::More 0.88
- base 0
- overload 0
- strict 0
- vars 0
- warnings 0
- ExtUtils-Config-0.007
- pathname: L/LE/LEONT/ExtUtils-Config-0.007.tar.gz
+ ExtUtils::MakeMaker 6.17
+ perl 5.006001
+ ExtUtils-MakeMaker-7.04
+ pathname: B/BI/BINGOS/ExtUtils-MakeMaker-7.04.tar.gz
provides:
- ExtUtils::Config 0.007
- requirements:
- Config 0
- Data::Dumper 0
- ExtUtils::MakeMaker 6.30
- File::Find 0
- File::Temp 0
- Test::More 0.88
- strict 0
- warnings 0
- ExtUtils-Helpers-0.021
- pathname: L/LE/LEONT/ExtUtils-Helpers-0.021.tar.gz
- provides:
- ExtUtils::Helpers 0.021
- ExtUtils::Helpers::Unix 0.021
- ExtUtils::Helpers::VMS 0.021
- ExtUtils::Helpers::Windows 0.021
- requirements:
- Carp 0
- Config 0
- Exporter 5.57
- ExtUtils::MakeMaker 6.30
- File::Basename 0
- File::Copy 0
- File::Spec::Functions 0
- Module::Load 0
- Text::ParseWords 3.24
- strict 0
- warnings 0
- ExtUtils-InstallPaths-0.010
- pathname: L/LE/LEONT/ExtUtils-InstallPaths-0.010.tar.gz
- provides:
- ExtUtils::InstallPaths 0.010
- requirements:
- Carp 0
- ExtUtils::Config 0.002
- ExtUtils::MakeMaker 6.30
- File::Spec 0
- strict 0
- warnings 0
- ExtUtils-MakeMaker-6.96
- pathname: B/BI/BINGOS/ExtUtils-MakeMaker-6.96.tar.gz
- provides:
- DynaLoader 6.96
- ExtUtils::Command::MM 6.96
- ExtUtils::Liblist 6.96
- ExtUtils::Liblist::Kid 6.96
- ExtUtils::MM 6.96
- ExtUtils::MM_AIX 6.96
- ExtUtils::MM_Any 6.96
- ExtUtils::MM_BeOS 6.96
- ExtUtils::MM_Cygwin 6.96
- ExtUtils::MM_DOS 6.96
- ExtUtils::MM_Darwin 6.96
- ExtUtils::MM_MacOS 6.96
- ExtUtils::MM_NW5 6.96
- ExtUtils::MM_OS2 6.96
- ExtUtils::MM_QNX 6.96
- ExtUtils::MM_UWIN 6.96
- ExtUtils::MM_Unix 6.96
- ExtUtils::MM_VMS 6.96
- ExtUtils::MM_VOS 6.96
- ExtUtils::MM_Win32 6.96
- ExtUtils::MM_Win95 6.96
- ExtUtils::MY 6.96
- ExtUtils::MakeMaker 6.96
- ExtUtils::MakeMaker::Config 6.96
- ExtUtils::MakeMaker::_version 6.96
- ExtUtils::Mkbootstrap 6.96
- ExtUtils::Mksymlists 6.96
- ExtUtils::testlib 6.96
- MM 6.96
- MY 6.96
- in 6.96
+ DynaLoader 7.04
+ ExtUtils::Command::MM 7.04
+ ExtUtils::Liblist 7.04
+ ExtUtils::Liblist::Kid 7.04
+ ExtUtils::MM 7.04
+ ExtUtils::MM_AIX 7.04
+ ExtUtils::MM_Any 7.04
+ ExtUtils::MM_BeOS 7.04
+ ExtUtils::MM_Cygwin 7.04
+ ExtUtils::MM_DOS 7.04
+ ExtUtils::MM_Darwin 7.04
+ ExtUtils::MM_MacOS 7.04
+ ExtUtils::MM_NW5 7.04
+ ExtUtils::MM_OS2 7.04
+ ExtUtils::MM_QNX 7.04
+ ExtUtils::MM_UWIN 7.04
+ ExtUtils::MM_Unix 7.04
+ ExtUtils::MM_VMS 7.04
+ ExtUtils::MM_VOS 7.04
+ ExtUtils::MM_Win32 7.04
+ ExtUtils::MM_Win95 7.04
+ ExtUtils::MY 7.04
+ ExtUtils::MakeMaker 7.04
+ ExtUtils::MakeMaker::Config 7.04
+ ExtUtils::MakeMaker::Locale 7.04
+ ExtUtils::MakeMaker::_version 7.04
+ ExtUtils::MakeMaker::charstar 7.04
+ ExtUtils::MakeMaker::version 7.04
+ ExtUtils::MakeMaker::version::regex 7.04
+ ExtUtils::MakeMaker::version::vpp 7.04
+ ExtUtils::Mkbootstrap 7.04
+ ExtUtils::Mksymlists 7.04
+ ExtUtils::testlib 7.04
+ MM 7.04
+ MY 7.04
+ in 7.04
requirements:
Data::Dumper 0
DirHandle 0
+ Encode 0
File::Basename 0
File::Spec 0.8
Pod::Man 0
@@ -1329,47 +1217,42 @@ DISTRIBUTIONS
Getopt::Std 0
Test::More 0.80
Test::Script 1.05
- Filesys-DiskUsage-0.05
- pathname: C/CO/COG/Filesys-DiskUsage-0.05.tar.gz
+ Filesys-DiskUsage-0.08
+ pathname: S/SZ/SZABGAB/Filesys-DiskUsage-0.08.tar.gz
provides:
- Filesys::DiskUsage 0.05
+ Filesys::DiskUsage 0.08
requirements:
ExtUtils::MakeMaker 0
File::Basename 0
+ File::Find 0
+ File::Temp 0
Test::More 0
- Hash-Merge-Simple-0.051
- pathname: R/RO/ROKR/Hash-Merge-Simple-0.051.tar.gz
+ Test::Warn 0
+ IO-Socket-IP-0.34
+ pathname: P/PE/PEVANS/IO-Socket-IP-0.34.tar.gz
provides:
- Hash::Merge::Simple 0.051
+ IO::Socket::IP 0.34
requirements:
- Clone 0
- ExtUtils::MakeMaker 6.31
- Storable 0
- Test::Most 0
- IO-Socket-SSL-1.997
- pathname: S/SU/SULLR/IO-Socket-SSL-1.997.tar.gz
+ IO::Socket 0
+ Socket 1.97
+ Test::More 0.88
+ IPC-Run3-0.048
+ pathname: R/RJ/RJBS/IPC-Run3-0.048.tar.gz
provides:
- IO::Socket::SSL 1.997
- IO::Socket::SSL::Intercept 1.93
- IO::Socket::SSL::OCSP_Cache 1.997
- IO::Socket::SSL::OCSP_Resolver 1.997
- IO::Socket::SSL::PublicSuffix undef
- IO::Socket::SSL::SSL_Context 1.997
- IO::Socket::SSL::SSL_HANDLE 1.997
- IO::Socket::SSL::Session_Cache 1.997
- IO::Socket::SSL::Utils 0.03
- requirements:
- ExtUtils::MakeMaker 0
- Net::SSLeay 1.46
- Scalar::Util 0
- IPC-Run3-0.046
- pathname: R/RJ/RJBS/IPC-Run3-0.046.tar.gz
- provides:
- IPC::Run3 0.046
+ IPC::Run3 0.048
requirements:
ExtUtils::MakeMaker 0
Test::More 0.31
Time::HiRes 0
+ JSON-PP-2.27300
+ pathname: M/MA/MAKAMAKA/JSON-PP-2.27300.tar.gz
+ provides:
+ JSON::PP 2.27300
+ JSON::PP::Boolean 2.27300
+ JSON::PP::IncrParser 2.27300
+ requirements:
+ ExtUtils::MakeMaker 0
+ Test::More 0
JavaScript-Minifier-XS-0.09
pathname: G/GT/GTERMARS/JavaScript-Minifier-XS-0.09.tar.gz
provides:
@@ -1378,44 +1261,54 @@ DISTRIBUTIONS
ExtUtils::CBuilder 0
Test::More 0
perl v5.8.8
- List-MoreUtils-0.33
- pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz
+ List-AllUtils-0.09
+ pathname: D/DR/DROLSKY/List-AllUtils-0.09.tar.gz
provides:
- List::MoreUtils 0.33
+ List::AllUtils 0.09
requirements:
- ExtUtils::CBuilder 0.27
- ExtUtils::MakeMaker 6.52
- Test::More 0.82
- perl 5.00503
- Module-Build-0.4205
- pathname: L/LE/LEONT/Module-Build-0.4205.tar.gz
+ Exporter 0
+ ExtUtils::MakeMaker 0
+ List::MoreUtils 0.28
+ List::Util 1.31
+ base 0
+ strict 0
+ warnings 0
+ List-MoreUtils-0.402
+ pathname: R/RE/REHSACK/List-MoreUtils-0.402.tar.gz
provides:
- Module::Build 0.4205
- Module::Build::Base 0.4205
- Module::Build::Compat 0.4205
- Module::Build::Config 0.4205
- Module::Build::Cookbook 0.4205
- Module::Build::Dumper 0.4205
- Module::Build::ModuleInfo 0.4205
- Module::Build::Notes 0.4205
- Module::Build::PPMMaker 0.4205
- Module::Build::Platform::Default 0.4205
- Module::Build::Platform::MacOS 0.4205
- Module::Build::Platform::Unix 0.4205
- Module::Build::Platform::VMS 0.4205
- Module::Build::Platform::VOS 0.4205
- Module::Build::Platform::Windows 0.4205
- Module::Build::Platform::aix 0.4205
- Module::Build::Platform::cygwin 0.4205
- Module::Build::Platform::darwin 0.4205
- Module::Build::Platform::os2 0.4205
- Module::Build::PodParser 0.4205
- Module::Build::Version 0.87
- Module::Build::YAML 1.41
- inc::latest 0.4205
- inc::latest::private 0.4205
+ List::MoreUtils 0.402
+ List::MoreUtils::PP 0.402
+ List::MoreUtils::XS 0.402
requirements:
- CPAN::Meta 2.110420
+ Exporter::Tiny 0.038
+ ExtUtils::MakeMaker 0
+ XSLoader 0
+ Module-Build-0.4210
+ pathname: L/LE/LEONT/Module-Build-0.4210.tar.gz
+ provides:
+ Module::Build 0.4210
+ Module::Build::Base 0.4210
+ Module::Build::Compat 0.4210
+ Module::Build::Config 0.4210
+ Module::Build::Cookbook 0.4210
+ Module::Build::Dumper 0.4210
+ Module::Build::Notes 0.4210
+ Module::Build::PPMMaker 0.4210
+ Module::Build::Platform::Default 0.4210
+ Module::Build::Platform::MacOS 0.4210
+ Module::Build::Platform::Unix 0.4210
+ Module::Build::Platform::VMS 0.4210
+ Module::Build::Platform::VOS 0.4210
+ Module::Build::Platform::Windows 0.4210
+ Module::Build::Platform::aix 0.4210
+ Module::Build::Platform::cygwin 0.4210
+ Module::Build::Platform::darwin 0.4210
+ Module::Build::Platform::os2 0.4210
+ Module::Build::PodParser 0.4210
+ inc::latest 0.4210
+ inc::latest::private 0.4210
+ requirements:
+ CPAN::Meta 2.142060
CPAN::Meta::YAML 0.003
Cwd 0
Data::Dumper 0
@@ -1440,44 +1333,15 @@ DISTRIBUTIONS
Test::More 0.49
Text::Abbrev 0
Text::ParseWords 0
- perl 5.006001
+ perl 5.008000
version 0.87
- Module-Build-Tiny-0.035
- pathname: L/LE/LEONT/Module-Build-Tiny-0.035.tar.gz
+ Module-Implementation-0.09
+ pathname: D/DR/DROLSKY/Module-Implementation-0.09.tar.gz
provides:
- Module::Build::Tiny 0.035
- requirements:
- CPAN::Meta 0
- DynaLoader 0
- Exporter 5.57
- ExtUtils::CBuilder 0
- ExtUtils::Config 0.003
- ExtUtils::Helpers 0.020
- ExtUtils::Install 0
- ExtUtils::InstallPaths 0.002
- ExtUtils::ParseXS 0
- File::Basename 0
- File::Find 0
- File::Path 0
- File::Spec::Functions 0
- Getopt::Long 2.36
- JSON::PP 2
- Pod::Man 0
- TAP::Harness::Env 0
- perl 5.006
- strict 0
- warnings 0
- Module-Implementation-0.07
- pathname: D/DR/DROLSKY/Module-Implementation-0.07.tar.gz
- provides:
- Module::Implementation 0.07
- T::Impl1 undef
- T::Impl2 undef
- T::ImplFails1 undef
- T::ImplFails2 undef
+ Module::Implementation 0.09
requirements:
Carp 0
- ExtUtils::MakeMaker 6.30
+ ExtUtils::MakeMaker 0
Module::Runtime 0.012
Try::Tiny 0
strict 0
@@ -1492,8 +1356,8 @@ DISTRIBUTIONS
perl 5.006
strict 0
warnings 0
- Mojolicious-5.12
- pathname: S/SR/SRI/Mojolicious-5.12.tar.gz
+ Mojolicious-5.70
+ pathname: S/SR/SRI/Mojolicious-5.70.tar.gz
provides:
Mojo undef
Mojo::Asset undef
@@ -1556,7 +1420,7 @@ DISTRIBUTIONS
Mojo::UserAgent::Server undef
Mojo::UserAgent::Transactor undef
Mojo::Util undef
- Mojolicious 5.12
+ Mojolicious 5.70
Mojolicious::Command undef
Mojolicious::Command::cgi undef
Mojolicious::Command::cpanify undef
@@ -1604,62 +1468,57 @@ DISTRIBUTIONS
ojo undef
requirements:
ExtUtils::MakeMaker 0
+ IO::Socket::IP 0.26
+ Pod::Simple 3.09
+ Time::Local 1.2
perl 5.010001
- Mojolicious-Plugin-AssetPack-0.16
- pathname: J/JH/JHTHORSEN/Mojolicious-Plugin-AssetPack-0.16.tar.gz
+ Mojolicious-Plugin-AssetPack-0.32
+ pathname: J/JH/JHTHORSEN/Mojolicious-Plugin-AssetPack-0.32.tar.gz
provides:
- Mojolicious::Plugin::AssetPack 0.16
+ Mojolicious::Plugin::AssetPack 0.32
+ Mojolicious::Plugin::AssetPack::Preprocessor undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::CoffeeScript undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::Css undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::Fallback undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::JavaScript undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::Jsx undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::Less undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::Sass undef
+ Mojolicious::Plugin::AssetPack::Preprocessor::Scss undef
Mojolicious::Plugin::AssetPack::Preprocessors 0.01
+ Mojolicious::Plugin::AssetPack::Preprocessors::CWD 0.01
requirements:
CSS::Minifier::XS 0.01
ExtUtils::MakeMaker 0
File::Which 1.00
IPC::Run3 0.04
JavaScript::Minifier::XS 0.01
- Mojolicious 4.30
+ Mojolicious 5.00
Test::More 0.88
- Mojolicious-Plugin-ConfigHashMerge-0.01
- pathname: D/DO/DOTAN/Mojolicious-Plugin-ConfigHashMerge-0.01.tar.gz
+ Mojolicious-Plugin-I18N-1.4
+ pathname: S/SH/SHARIFULN/Mojolicious-Plugin-I18N-1.4.tar.gz
provides:
- Mojolicious::Plugin::ConfigHashMerge 0.01
- requirements:
- ExtUtils::MakeMaker 0
- Hash::Merge::Simple 0.051
- Mojolicious 4.85
- Mojolicious-Plugin-I18N-1.3
- pathname: S/SH/SHARIFULN/Mojolicious-Plugin-I18N-1.3.tar.gz
- provides:
- Mojolicious::Plugin::I18N 1.3
+ Mojolicious::Plugin::I18N 1.4
requirements:
I18N::LangTags 0.35
Module::Build 0.42
Mojolicious 5
Test::More 0
perl 5.010001
- Net-Domain-TLD-1.70
- pathname: A/AL/ALEXP/Net-Domain-TLD-1.70.tar.gz
+ Net-Domain-TLD-1.72
+ pathname: A/AL/ALEXP/Net-Domain-TLD-1.72.tar.gz
provides:
- Net::Domain::TLD 1.70
+ Net::Domain::TLD 1.72
requirements:
Carp 0
ExtUtils::MakeMaker 0
Storable 0
- Net-SSLeay-1.58
- pathname: M/MI/MIKEM/Net-SSLeay-1.58.tar.gz
+ NetAddr-IP-4.075
+ pathname: M/MI/MIKER/NetAddr-IP-4.075.tar.gz
provides:
- Net::SSLeay 1.58
- Net::SSLeay::Handle 0.61
- requirements:
- ExtUtils::MakeMaker 6.36
- MIME::Base64 0
- Test::More 0.60_01
- perl 5.005
- NetAddr-IP-4.072
- pathname: M/MI/MIKER/NetAddr-IP-4.072.tar.gz
- provides:
- NetAddr::IP 4.072
+ NetAddr::IP 4.075
NetAddr::IP::InetBase 0.08
- NetAddr::IP::Lite 1.52
+ NetAddr::IP::Lite 1.54
NetAddr::IP::Util 1.51
NetAddr::IP::UtilPP 1.09
NetAddr::IP::UtilPolluted 1.51
@@ -1683,44 +1542,6 @@ DISTRIBUTIONS
Test::More 0.47
Test::Script 1.06
perl 5.006
- Package-Stash-0.36
- pathname: D/DO/DOY/Package-Stash-0.36.tar.gz
- provides:
- Package::Stash 0.36
- Package::Stash::PP 0.36
- requirements:
- B 0
- Carp 0
- Config 0
- Dist::CheckConflicts 0.02
- ExtUtils::MakeMaker 6.30
- File::Find 0
- File::Spec 0
- File::Temp 0
- Getopt::Long 0
- Module::Implementation 0.06
- Package::Stash::XS 0.26
- Scalar::Util 0
- Symbol 0
- Test::Fatal 0
- Test::More 0.88
- Test::Requires 0
- Text::ParseWords 0
- base 0
- constant 0
- lib 0
- strict 0
- warnings 0
- Package-Stash-XS-0.28
- pathname: D/DO/DOY/Package-Stash-XS-0.28.tar.gz
- provides:
- CompileTime undef
- Package::Stash::XS 0.28
- requirements:
- ExtUtils::MakeMaker 6.30
- XSLoader 0
- strict 0
- warnings 0
Params-Util-1.07
pathname: A/AD/ADAMK/Params-Util-1.07.tar.gz
provides:
@@ -1732,10 +1553,10 @@ DISTRIBUTIONS
Scalar::Util 1.18
Test::More 0.42
perl 5.00503
- Params-Validate-1.08
- pathname: D/DR/DROLSKY/Params-Validate-1.08.tar.gz
+ Params-Validate-1.13
+ pathname: D/DR/DROLSKY/Params-Validate-1.13.tar.gz
provides:
- Attribute::Params::Validate 1.08
+ Attribute::Params::Validate 1.13
Bar undef
Baz undef
Foo undef
@@ -1745,10 +1566,10 @@ DISTRIBUTIONS
PVTests::Regex undef
PVTests::Standard undef
PVTests::With undef
- Params::Validate 1.08
- Params::Validate::Constants 1.08
- Params::Validate::PP 1.08
- Params::Validate::XS 1.08
+ Params::Validate 1.13
+ Params::Validate::Constants 1.13
+ Params::Validate::PP 1.13
+ Params::Validate::XS 1.13
Quux undef
Testing::X undef
Yadda undef
@@ -1766,16 +1587,31 @@ DISTRIBUTIONS
Scalar::Util 1.10
Test::Fatal 0
Test::More 0.88
+ Test::Requires 0
Tie::Array 0
Tie::Hash 0
XSLoader 0
attributes 0
base 0
+ lib 0
overload 0
perl 5.008001
strict 0
vars 0
warnings 0
+ Parse-CPAN-Meta-1.4414
+ pathname: D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4414.tar.gz
+ provides:
+ Parse::CPAN::Meta 1.4414
+ requirements:
+ CPAN::Meta::YAML 0.011
+ Carp 0
+ Encode 0
+ Exporter 0
+ ExtUtils::MakeMaker 6.30
+ File::Spec 0.80
+ JSON::PP 2.27200
+ strict 0
Probe-Perl-0.03
pathname: K/KW/KWILLIAMS/Probe-Perl-0.03.tar.gz
provides:
@@ -1785,17 +1621,25 @@ DISTRIBUTIONS
ExtUtils::MakeMaker 6.30
File::Spec 0
strict 0
- Sub-Install-0.927
- pathname: R/RJ/RJBS/Sub-Install-0.927.tar.gz
+ Scalar-List-Utils-1.41
+ pathname: P/PE/PEVANS/Scalar-List-Utils-1.41.tar.gz
provides:
- Sub::Install 0.927
+ List::Util 1.41
+ List::Util::XS 1.41
+ Scalar::Util 1.41
+ Sub::Util 1.41
requirements:
- B 0
- Carp 0
- ExtUtils::MakeMaker 6.30
- Scalar::Util 0
- strict 0
- warnings 0
+ ExtUtils::MakeMaker 0
+ Test::More 0
+ Socket-2.016
+ pathname: P/PE/PEVANS/Socket-2.016.tar.gz
+ provides:
+ Socket 2.016
+ requirements:
+ ExtUtils::CBuilder 0
+ ExtUtils::Constant 0.23
+ ExtUtils::MakeMaker 0
+ perl 5.006001
Sub-Uplevel-0.24
pathname: D/DA/DAGOLDEN/Sub-Uplevel-0.24.tar.gz
provides:
@@ -1820,185 +1664,24 @@ DISTRIBUTIONS
Text::Balanced 2
if 0
perl 5.005
- Test-Deep-0.112
- pathname: R/RJ/RJBS/Test-Deep-0.112.tar.gz
+ Test-Fatal-0.014
+ pathname: R/RJ/RJBS/Test-Fatal-0.014.tar.gz
provides:
- Test::Deep 0.112
- Test::Deep::All undef
- Test::Deep::Any undef
- Test::Deep::Array undef
- Test::Deep::ArrayEach undef
- Test::Deep::ArrayElementsOnly undef
- Test::Deep::ArrayLength undef
- Test::Deep::ArrayLengthOnly undef
- Test::Deep::Blessed undef
- Test::Deep::Boolean undef
- Test::Deep::Cache undef
- Test::Deep::Cache::Simple undef
- Test::Deep::Class undef
- Test::Deep::Cmp undef
- Test::Deep::Code undef
- Test::Deep::Hash undef
- Test::Deep::HashEach undef
- Test::Deep::HashElements undef
- Test::Deep::HashKeys undef
- Test::Deep::HashKeysOnly undef
- Test::Deep::Ignore undef
- Test::Deep::Isa undef
- Test::Deep::ListMethods undef
- Test::Deep::MM undef
- Test::Deep::Methods undef
- Test::Deep::NoTest undef
- Test::Deep::Number undef
- Test::Deep::Obj undef
- Test::Deep::Ref undef
- Test::Deep::RefType undef
- Test::Deep::Regexp undef
- Test::Deep::RegexpMatches undef
- Test::Deep::RegexpRef undef
- Test::Deep::RegexpRefOnly undef
- Test::Deep::RegexpVersion undef
- Test::Deep::ScalarRef undef
- Test::Deep::ScalarRefOnly undef
- Test::Deep::Set undef
- Test::Deep::Shallow undef
- Test::Deep::Stack undef
- Test::Deep::String undef
- Test::Deep::SubHash undef
- Test::Deep::SubHashElements undef
- Test::Deep::SubHashKeys undef
- Test::Deep::SubHashKeysOnly undef
- Test::Deep::SuperHash undef
- Test::Deep::SuperHashElements undef
- Test::Deep::SuperHashKeys undef
- Test::Deep::SuperHashKeysOnly undef
- requirements:
- ExtUtils::MakeMaker 0
- List::Util 1.09
- Scalar::Util 1.09
- Test::More 0
- Test::NoWarnings 0.02
- Test::Tester 0.04
- Test-Differences-0.61
- pathname: O/OV/OVID/Test-Differences-0.61.tar.gz
- provides:
- Test::Differences 0.61
- requirements:
- Data::Dumper 2.126
- Module::Build 0.36
- Test::More 0
- Text::Diff 0.35
- Test-Exception-0.32
- pathname: A/AD/ADIE/Test-Exception-0.32.tar.gz
- provides:
- Test::Exception 0.32
- requirements:
- Module::Build 0.38
- Sub::Uplevel 0.18
- Test::Builder 0.7
- Test::Builder::Tester 1.07
- Test::Harness 2.03
- Test::More 0.7
- Test::Simple 0.7
- Test-Fatal-0.013
- pathname: R/RJ/RJBS/Test-Fatal-0.013.tar.gz
- provides:
- Test::Fatal 0.013
+ Test::Fatal 0.014
requirements:
Carp 0
Exporter 5.57
- ExtUtils::MakeMaker 6.30
+ ExtUtils::MakeMaker 0
Test::Builder 0
Try::Tiny 0.07
strict 0
warnings 0
- Test-Harness-3.30
- pathname: L/LE/LEONT/Test-Harness-3.30.tar.gz
+ Test-Requires-0.08
+ pathname: T/TO/TOKUHIROM/Test-Requires-0.08.tar.gz
provides:
- App::Prove 3.30
- App::Prove::State 3.30
- App::Prove::State::Result 3.30
- App::Prove::State::Result::Test 3.30
- TAP::Base 3.30
- TAP::Formatter::Base 3.30
- TAP::Formatter::Color 3.30
- TAP::Formatter::Console 3.30
- TAP::Formatter::Console::ParallelSession 3.30
- TAP::Formatter::Console::Session 3.30
- TAP::Formatter::File 3.30
- TAP::Formatter::File::Session 3.30
- TAP::Formatter::Session 3.30
- TAP::Harness 3.30
- TAP::Harness::Env 3.30
- TAP::Object 3.30
- TAP::Parser 3.30
- TAP::Parser::Aggregator 3.30
- TAP::Parser::Grammar 3.30
- TAP::Parser::Iterator 3.30
- TAP::Parser::Iterator::Array 3.30
- TAP::Parser::Iterator::Process 3.30
- TAP::Parser::Iterator::Stream 3.30
- TAP::Parser::IteratorFactory 3.30
- TAP::Parser::Multiplexer 3.30
- TAP::Parser::Result 3.30
- TAP::Parser::Result::Bailout 3.30
- TAP::Parser::Result::Comment 3.30
- TAP::Parser::Result::Plan 3.30
- TAP::Parser::Result::Pragma 3.30
- TAP::Parser::Result::Test 3.30
- TAP::Parser::Result::Unknown 3.30
- TAP::Parser::Result::Version 3.30
- TAP::Parser::Result::YAML 3.30
- TAP::Parser::ResultFactory 3.30
- TAP::Parser::Scheduler 3.30
- TAP::Parser::Scheduler::Job 3.30
- TAP::Parser::Scheduler::Spinner 3.30
- TAP::Parser::Source 3.30
- TAP::Parser::SourceHandler 3.30
- TAP::Parser::SourceHandler::Executable 3.30
- TAP::Parser::SourceHandler::File 3.30
- TAP::Parser::SourceHandler::Handle 3.30
- TAP::Parser::SourceHandler::Perl 3.30
- TAP::Parser::SourceHandler::RawTAP 3.30
- TAP::Parser::YAMLish::Reader 3.30
- TAP::Parser::YAMLish::Writer 3.30
- Test::Harness 3.30
+ Test::Requires 0.08
requirements:
- ExtUtils::MakeMaker 0
- Test-Most-0.33
- pathname: O/OV/OVID/Test-Most-0.33.tar.gz
- provides:
- Test::Most 0.33
- Test::Most::Exception 0.33
- requirements:
- Exception::Class 1.14
- ExtUtils::MakeMaker 0
- Test::Deep 0.106
- Test::Differences 0.61
- Test::Exception 0.31
- Test::Harness 3.21
- Test::More 0.88
- Test::Warn 0.23
- Test-NoWarnings-1.04
- pathname: A/AD/ADAMK/Test-NoWarnings-1.04.tar.gz
- provides:
- Test::NoWarnings 1.04
- Test::NoWarnings::Warning 1.04
- requirements:
- ExtUtils::MakeMaker 0
- Test::Builder 0.86
- Test::More 0.47
- Test::Tester 0.107
- perl 5.006
- Test-Requires-0.07
- pathname: T/TO/TOKUHIROM/Test-Requires-0.07.tar.gz
- provides:
- Test::Requires 0.07
- requirements:
- CPAN::Meta 0
- CPAN::Meta::Prereqs 0
- ExtUtils::MakeMaker 6.59
- Module::Build 0.38
+ ExtUtils::MakeMaker 6.64
Test::Builder::Module 0
Test::More 0.61
perl 5.008_001
@@ -2015,16 +1698,6 @@ DISTRIBUTIONS
Test::Builder::Tester 1.02
Test::More 0.62
blib 0
- Test-Tester-0.109
- pathname: F/FD/FDALY/Test-Tester-0.109.tar.gz
- provides:
- Test::Tester 0.109
- Test::Tester::Capture undef
- Test::Tester::CaptureRunner undef
- Test::Tester::Delegate undef
- requirements:
- ExtUtils::MakeMaker 0
- Test::Builder 0
Test-Warn-0.30
pathname: C/CH/CHORNY/Test-Warn-0.30.tar.gz
provides:
@@ -2039,28 +1712,30 @@ DISTRIBUTIONS
Test::Builder::Tester 1.02
Test::More 0
perl 5.006
- Text-Diff-1.41
- pathname: O/OV/OVID/Text-Diff-1.41.tar.gz
+ Test-Warnings-0.019
+ pathname: E/ET/ETHER/Test-Warnings-0.019.tar.gz
provides:
- Text::Diff 1.41
- Text::Diff::Base 1.41
- Text::Diff::Config 1.41
- Text::Diff::Table 1.41
+ Test::Warnings 0.019
requirements:
- Algorithm::Diff 1.19
+ Carp 0
Exporter 0
ExtUtils::MakeMaker 0
- Text-Unidecode-1.01
- pathname: S/SB/SBURKE/Text-Unidecode-1.01.tar.gz
+ Test::Builder 0
+ parent 0
+ perl 5.006
+ strict 0
+ warnings 0
+ Text-Unidecode-1.23
+ pathname: S/SB/SBURKE/Text-Unidecode-1.23.tar.gz
provides:
- Text::Unidecode 1.01
+ Text::Unidecode 1.23
requirements:
ExtUtils::MakeMaker 0
perl 5.008
- Try-Tiny-0.19
- pathname: D/DO/DOY/Try-Tiny-0.19.tar.gz
+ Try-Tiny-0.22
+ pathname: D/DO/DOY/Try-Tiny-0.22.tar.gz
provides:
- Try::Tiny 0.19
+ Try::Tiny 0.22
requirements:
Carp 0
Exporter 5.57
diff --git a/sources/lutim-master/fontello-config.json b/sources/lutim-master/fontello-config.json
index d2a7a2b..ba09ba9 100644
--- a/sources/lutim-master/fontello-config.json
+++ b/sources/lutim-master/fontello-config.json
@@ -1,5 +1,5 @@
{
- "name": "",
+ "name": "fontello",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
@@ -18,6 +18,12 @@
"code": 59397,
"src": "fontawesome"
},
+ {
+ "uid": "4aad6bb50b02c18508aae9cbe14e784e",
+ "css": "share",
+ "code": 59400,
+ "src": "fontawesome"
+ },
{
"uid": "f48ae54adfb27d8ada53d0fd9e34ee10",
"css": "trash",
diff --git a/sources/lutim-master/lib/Lutim.pm b/sources/lutim-master/lib/Lutim.pm
index f760e4e..1bdf59d 100644
--- a/sources/lutim-master/lib/Lutim.pm
+++ b/sources/lutim-master/lib/Lutim.pm
@@ -10,14 +10,12 @@ mkdir($ENV{MOJO_TMPDIR}, 0700) unless (-d $ENV{MOJO_TMPDIR});
sub startup {
my $self = shift;
- push @{$self->commands->namespaces}, 'Lutim::Command';
-
$self->{wait_for_it} = {};
$self->plugin('I18N');
$self->plugin('AssetPack');
- my $config = $self->plugin('ConfigHashMerge', {
+ my $config = $self->plugin('Config', {
default => {
provisioning => 100,
provis_step => 5,
@@ -33,9 +31,6 @@ sub startup {
}
});
- # Default values
- $config->{provisioning} = $config->{provisionning} if (defined($config->{provisionning}));
-
die "You need to provide a contact information in lutim.conf !" unless (defined($config->{contact}));
$ENV{MOJO_MAX_MESSAGE_SIZE} = $config->{max_file_size};
@@ -83,6 +78,19 @@ sub startup {
}
);
+ $self->helper(
+ index_url => sub {
+ my $c = shift;
+ my $to_abs = shift;
+
+ my $url = $c->url_for('index');
+ $url = $url->to_abs() if (defined($to_abs) && $to_abs);
+
+ $url =~ s#([^/])$#$1/#;
+ return $url;
+ }
+ );
+
$self->helper(
ip => sub {
my $c = shift;
@@ -293,8 +301,9 @@ sub startup {
$self->asset('stats.css' => 'css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/morris-0.4.3.min.css', 'css/hennypenny.css', 'css/lutim.css');
$self->asset('about.css' => 'css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/hennypenny.css', 'css/lutim.css');
- $self->asset('index.js' => 'js/jquery-2.1.0.min.js', 'js/bootstrap.min.js', 'js/lutim.js', 'js/dmuploader.min.js');
- $self->asset('stats.js' => 'js/jquery-2.1.0.min.js', 'js/bootstrap.min.js', 'js/lutim.js', 'js/raphael-min.js', 'js/morris-0.4.3.min.js', 'js/stats.js');
+ $self->asset('index.js' => 'js/jquery-2.1.0.min.js', 'js/bootstrap.min.js', 'js/lutim.js', 'js/dmuploader.min.js');
+ $self->asset('stats.js' => 'js/jquery-2.1.0.min.js', 'js/bootstrap.min.js', 'js/lutim.js', 'js/raphael-min.js', 'js/morris-0.4.3.min.js', 'js/stats.js');
+ $self->asset('freeze.js' => 'js/jquery-2.1.0.min.js', 'js/freezeframe.min.js');
$self->defaults(layout => 'default');
diff --git a/sources/lutim-master/lib/Lutim/Command/cron/cleanbdd.pm b/sources/lutim-master/lib/Lutim/Command/cron/cleanbdd.pm
index fc0b1fe..4257755 100644
--- a/sources/lutim-master/lib/Lutim/Command/cron/cleanbdd.pm
+++ b/sources/lutim-master/lib/Lutim/Command/cron/cleanbdd.pm
@@ -2,6 +2,8 @@ package Lutim::Command::cron::cleanbdd;
use Mojo::Base 'Mojolicious::Command';
use LutimModel;
use Mojo::Util qw(slurp decode);
+use FindBin qw($Bin);
+use File::Spec qw(catfile);
has description => 'Delete IP addresses from database after configured delay.';
has usage => sub { shift->extract_usage };
@@ -9,7 +11,8 @@ has usage => sub { shift->extract_usage };
sub run {
my $c = shift;
- my $config = $c->app->plugin('ConfigHashMerge', {
+ my $config = $c->app->plugin('Config', {
+ file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
default => {
keep_ip_during => 365,
}
diff --git a/sources/lutim-master/lib/Lutim/Command/cron/cleanfiles.pm b/sources/lutim-master/lib/Lutim/Command/cron/cleanfiles.pm
index 885db01..008ece6 100644
--- a/sources/lutim-master/lib/Lutim/Command/cron/cleanfiles.pm
+++ b/sources/lutim-master/lib/Lutim/Command/cron/cleanfiles.pm
@@ -1,29 +1,35 @@
package Lutim::Command::cron::cleanfiles;
use Mojo::Base 'Mojolicious::Command';
use LutimModel;
+use Lutim;
use Mojo::Util qw(slurp decode);
+use FindBin qw($Bin);
+use File::Spec qw(catfile);
has description => 'Delete expired files.';
has usage => sub { shift->extract_usage };
sub run {
my $c = shift;
+ my $l = Lutim->new;
my $time = time();
my @images = LutimModel::Lutim->select('WHERE enabled = 1 AND (delete_at_day * 86400) < (? - created_at) AND delete_at_day != 0', $time);
for my $image (@images) {
- $c->app->delete_image($image);
+ $l->app->delete_image($image);
}
- my $config = $c->app->plugin('Config');
+ my $config = $c->app->plugin('Config', {
+ file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
+ });
if (defined($config->{delete_no_longer_viewed_files}) && $config->{delete_no_longer_viewed_files} > 0) {
$time = time() - $config->{delete_no_longer_viewed_files} * 86400;
@images = LutimModel::Lutim->select('WHERE enabled = 1 AND last_access_at < ?', $time);
for my $image (@images) {
- $c->app->delete_image($image);
+ $l->app->delete_image($image);
}
}
}
diff --git a/sources/lutim-master/lib/Lutim/Command/cron/stats.pm b/sources/lutim-master/lib/Lutim/Command/cron/stats.pm
index 3fc6e92..9e770db 100644
--- a/sources/lutim-master/lib/Lutim/Command/cron/stats.pm
+++ b/sources/lutim-master/lib/Lutim/Command/cron/stats.pm
@@ -4,6 +4,8 @@ use LutimModel;
use Mojo::DOM;
use Mojo::Util qw(slurp spurt decode);
use DateTime;
+use FindBin qw($Bin);
+use File::Spec qw(catfile);
has description => 'Generate statistics about Lutim.';
has usage => sub { shift->extract_usage };
@@ -11,7 +13,8 @@ has usage => sub { shift->extract_usage };
sub run {
my $c = shift;
- my $config = $c->app->plugin('ConfigHashMerge', {
+ my $config = $c->app->plugin('Config', {
+ file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
default => {
stats_day_num => 365
}
diff --git a/sources/lutim-master/lib/Lutim/Command/cron/watch.pm b/sources/lutim-master/lib/Lutim/Command/cron/watch.pm
index 4680c7f..7ae7cad 100644
--- a/sources/lutim-master/lib/Lutim/Command/cron/watch.pm
+++ b/sources/lutim-master/lib/Lutim/Command/cron/watch.pm
@@ -4,6 +4,8 @@ use Mojo::Util qw(slurp decode);
use Filesys::DiskUsage qw/du/;
use LutimModel;
use Switch;
+use FindBin qw($Bin);
+use File::Spec qw(catfile);
has description => 'Watch the files directory and take action when over quota';
has usage => sub { shift->extract_usage };
@@ -11,7 +13,8 @@ has usage => sub { shift->extract_usage };
sub run {
my $c = shift;
- my $config = $c->app->plugin('ConfigHashMerge', {
+ my $config = $c->app->plugin('Config', {
+ file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
default => {
policy_when_full => 'warn'
}
diff --git a/sources/lutim-master/lib/Lutim/Controller.pm b/sources/lutim-master/lib/Lutim/Controller.pm
index a68d16a..3a5d825 100644
--- a/sources/lutim-master/lib/Lutim/Controller.pm
+++ b/sources/lutim-master/lib/Lutim/Controller.pm
@@ -279,9 +279,13 @@ sub add {
my $filename = unidecode($upload->filename);
my $ext = ($filename =~ m/([^.]+)$/)[0];
my $path = 'files/'.$records[0]->short.'.'.$ext;
+
+ my ($width, $height);
if ($im_loaded) {
- my $im = Image::Magick->new;
+ my $im = Image::Magick->new;
$im->BlobToImage($upload->slurp);
+ $width = $im->Get('width');
+ $height = $im->Get('height');
$im->Resize(geometry=>'x85');
$thumb = 'data:'.$mediatype.';base64,';
@@ -301,7 +305,9 @@ sub add {
delete_at_day => ($c->param('delete-day') && $c->param('delete-day') <= $c->max_delay) ? $c->param('delete-day') : $c->max_delay,
delete_at_first_view => ($c->param('first-view')) ? 1 : 0,
created_at => time(),
- created_by => $ip
+ created_by => $ip,
+ width => $width,
+ height => $height
);
# Log image creation
@@ -413,11 +419,31 @@ sub short {
$test = 1;
my $short = $images[0]->short;
$short .= '/'.$key if (defined($key));
+ my ($width, $height) = (340,340);
+ if ($images[0]->mediatype eq 'image/gif') {
+ if (defined($images[0]->width) && defined($images[0]->height)) {
+ ($width, $height) = ($images[0]->width, $images[0]->height);
+ } elsif ($im_loaded) {
+ my $upload = $c->decrypt($key, $images[0]->path);
+ my $im = Image::Magick->new;
+ $im->BlobToImage($upload->slurp);
+ $width = $im->Get('width');
+ $height = $im->Get('height');
+
+ $images[0]->update(
+ width => $width,
+ height => $height
+ );
+ }
+ }
return $c->render(
template => 'twitter',
layout => undef,
short => $short,
- filename => $images[0]->filename
+ filename => $images[0]->filename,
+ mimetype => ($c->req->url->to_abs()->scheme eq 'https') ? $images[0]->mediatype : '',
+ width => $width,
+ height => $height
);
} else {
# Delete image if needed
diff --git a/sources/lutim-master/lib/Lutim/I18N/en.pm b/sources/lutim-master/lib/Lutim/I18N/en.pm
index 5e485d7..9cb6456 100644
--- a/sources/lutim-master/lib/Lutim/I18N/en.pm
+++ b/sources/lutim-master/lib/Lutim/I18N/en.pm
@@ -6,7 +6,7 @@ my $inf_body = <Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service.
The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed.
How does it work?
-Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you three URLs. One to view the image, an other to directly download it an a last which you can use in Twitter.
+Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you three URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want.
You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed.
Is it really free (as in free beer)?
Yes, it is! On the other side, if you want to support the developer, you can do it via Flattr or with BitCoin .
@@ -14,6 +14,9 @@ my $inf_body = <Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!
The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year).
If the files are deleted if you ask it while posting it, their SHA512 footprint are retained.
+Who owns rights on images uploaded on Lutim?
+Only the uploader! (well, only if he's the only owner of the images' rights before the upload)
+Unlike many image sharing services, you don't give rights on uploaded images.
How to report an image?
Please contact the administrator: [_2]
How do you pronounce Lutim?
@@ -23,7 +26,7 @@ my $inf_body = <For more details, see the Github page of the project.
Main developers
Contributors
@@ -44,51 +47,53 @@ our %Lexicon = (
'informations-body' => $inf_body,
'view-link' => 'View link',
'download-link' => 'Download link',
- 'twitter-link' => 'Link for put in a tweet',
+ 'share-link' => 'Link for share on social networks',
'tweet_it' => 'Tweet it!',
- 'share_it' => 'Share it!',
- 'delete-link' => 'Deletion link',
- 'some-bad' => 'Something bad happened',
- 'delete-first' => 'Delete at first view?',
- 'delete-day' => 'Delete after 24 hours?',
- 'upload_image' => 'Send an image',
- 'image-only' => 'Only images are allowed',
- 'go' => 'Let\'s go!',
- 'drag-n-drop' => 'Drag & drop images here',
- 'or' => '-or-',
- 'file-browser' => 'Click to open the file browser',
- 'image_not_found' => 'Unable to find the image: it has been deleted.',
- 'no_more_short' => 'There is no more available URL. Retry or contact the administrator. [_1]',
- 'no_valid_file' => 'The file [_1] is not an image.',
- 'file_too_big' => 'The file exceed the size limit ([_1])',
- 'no_time_limit' => 'No time limit',
- '24_hours' => '24 hours',
- '7_days' => '7 days',
- '30_days' => '30 days',
- '1_year' => 'One year',
- 'pushed-images' => ' sent images on this instance from beginning.',
- 'graph-data-once-a-day' => 'The graph\'s datas are not updated in real-time.',
- 'lutim-stats' => 'Lutim\'s statistics',
- 'back-to-index' => 'Back to homepage',
- 'stop_upload' => 'Uploading is currently disabled, please try later or contact the administrator ([_1]).',
- 'download_error' => 'An error occured while downloading the image.',
- 'no_valid_url' => 'The URL is not valid.',
- 'image_url' => 'Image URL',
- 'upload_image_url' => 'Upload an image with its URL',
- 'delay_0' => 'no time limit',
- 'delay_1' => '24 hours',
- 'delay_days' => '[_1] days',
- 'delay_365' => '1 year',
- 'max_delay' => 'Warning! The maximum time limit for an image is [_1] day(s), even if you choose "no time limit".',
- 'crypt_image' => 'Encrypt the image (Lutim does not keep the key).',
- 'always_encrypt' => 'The images are encrypted on the server (Lutim does not keep the key).',
- 'image_deleted' => 'The image [_1] has been successfully deleted',
- 'invalid_token' => 'The delete token is invalid.',
- 'already_deleted' => 'The image [_1] has already been deleted.',
- 'install_as_webapp' => 'Install webapp',
- 'image_delay_modified' => 'The image\'s delay has been successfully modified',
- 'image_mod_not_found' => 'Unable to find the image [_1].',
- 'modify_image_error' => 'Error while trying to modify the image.',
+ 'share_it' => 'Share it!',
+ 'delete-link' => 'Deletion link',
+ 'some-bad' => 'Something bad happened',
+ 'delete-first' => 'Delete at first view?',
+ 'delete-day' => 'Delete after 24 hours?',
+ 'upload_image' => 'Send an image',
+ 'image-only' => 'Only images are allowed',
+ 'go' => 'Let\'s go!',
+ 'drag-n-drop' => 'Drag & drop images here',
+ 'or' => '-or-',
+ 'file-browser' => 'Click to open the file browser',
+ 'image_not_found' => 'Unable to find the image: it has been deleted.',
+ 'no_more_short' => 'There is no more available URL. Retry or contact the administrator. [_1]',
+ 'no_valid_file' => 'The file [_1] is not an image.',
+ 'file_too_big' => 'The file exceed the size limit ([_1])',
+ 'no_time_limit' => 'No time limit',
+ '24_hours' => '24 hours',
+ '7_days' => '7 days',
+ '30_days' => '30 days',
+ '1_year' => 'One year',
+ 'pushed-images' => ' sent images on this instance from beginning.',
+ 'graph-data-once-a-day' => 'The graph\'s datas are not updated in real-time.',
+ 'lutim-stats' => 'Lutim\'s statistics',
+ 'back-to-index' => 'Back to homepage',
+ 'stop_upload' => 'Uploading is currently disabled, please try later or contact the administrator ([_1]).',
+ 'download_error' => 'An error occured while downloading the image.',
+ 'no_valid_url' => 'The URL is not valid.',
+ 'image_url' => 'Image URL',
+ 'upload_image_url' => 'Upload an image with its URL',
+ 'delay_0' => 'no time limit',
+ 'delay_1' => '24 hours',
+ 'delay_days' => '[_1] days',
+ 'delay_365' => '1 year',
+ 'max_delay' => 'Warning! The maximum time limit for an image is [_1] day(s), even if you choose "no time limit".',
+ 'crypt_image' => 'Encrypt the image (Lutim does not keep the key).',
+ 'always_encrypt' => 'The images are encrypted on the server (Lutim does not keep the key).',
+ 'image_deleted' => 'The image [_1] has been successfully deleted',
+ 'invalid_token' => 'The delete token is invalid.',
+ 'already_deleted' => 'The image [_1] has already been deleted.',
+ 'install_as_webapp' => 'Install webapp',
+ 'image_delay_modified' => 'The image\'s delay has been successfully modified',
+ 'image_mod_not_found' => 'Unable to find the image [_1].',
+ 'modify_image_error' => 'Error while trying to modify the image.',
+ 'uploaded_files_by_days' => 'Number of uploaded files, per day',
+ 'evolution_total_files' => 'Evolution of total number of uploaded files',
);
1;
diff --git a/sources/lutim-master/lib/Lutim/I18N/fr.pm b/sources/lutim-master/lib/Lutim/I18N/fr.pm
index c1dec0c..331a5e1 100644
--- a/sources/lutim-master/lib/Lutim/I18N/fr.pm
+++ b/sources/lutim-master/lib/Lutim/I18N/fr.pm
@@ -6,7 +6,7 @@ my $inf_body = <Lutim est un service gratuit et anonyme d’hébergement d’images. Il s’agit aussi du nom du logiciel (libre) qui fournit ce service.
Les images déposées sur Lutim peuvent être stockées indéfiniment, ou s’effacer dès le premier affichage ou au bout du délai choisi parmi ceux proposés.
Comment ça marche ?
-Faites glisser des images dans la zone prévue à cet effet ou sélectionnez un fichier de façon classique et Lutim vous fournira troie URLs en retour. Une pour afficher l’image, une autre pour la télécharger directement et une dernière utilisable sur Twitter.
+Faites glisser des images dans la zone prévue à cet effet ou sélectionnez un fichier de façon classique et Lutim vous fournira troie URLs en retour. Une pour afficher l’image, une autre pour la télécharger directement, une pour l'utiliser sur les réseaux sociaux et une dernière pour supprimer votre image quand vous le souhaitez.
Vous pouvez, de façon facultative, demander à ce que la ou les images déposées sur Lutim soient supprimées après leur premier affichage (ou téléchargement) ou au bout d'un délai choisi parmi ceux proposés.
C’est vraiment gratuit ?
Oui, ça l’est ! Par contre, si vous avez envie de soutenir le développeur, vous pouvez faire un microdon avec Flattr ou en BitCoin .
@@ -14,6 +14,9 @@ my $inf_body = <Oui, ça l’est ! Par contre, pour des raisons légales, votre adresse IP sera enregistrée lorsque vous enverrez une image. Ne vous affolez pas, c’est de toute façon normalement le cas de tous les sites sur lesquels vous envoyez des fichiers !
L’IP de la personne ayant déposé l’image est stockée pendant un délai dépendant de l'administrateur de l'instance (pour l'instance officielle, dont le serveur est en France, c'est un délai d'un an).
Si les fichiers sont bien supprimés si vous en avez exprimé le choix, leur empreinte SHA512 est toutefois conservée.
+Qui possède des droits sur les images envoyées sur Lutim ?
+Seulement l'envoyeur ! (enfin, seulement s'il possède des droits exclusifs sur les images avant de les envoyer)
+Au contraire de la majorité des services de partages d'image, vous ne cédez aucun droit sur les images envoyées.
Comment peut-on faire pour signaler une image ?
Veuillez contacter l’administrateur : [_2]
Comment doit-on prononcer Lutim ?
@@ -23,7 +26,7 @@ my $inf_body = <Pour plus de détails, consultez la page Github du projet.
Développeurs de l'application
Contributeurs
@@ -44,51 +47,53 @@ our %Lexicon = (
'informations-body' => $inf_body,
'view-link' => 'Lien d\'affichage',
'download-link' => 'Lien de téléchargement',
- 'twitter-link' => 'Lien pour mettre dans un tweet',
+ 'share-link' => 'Lien pour partager sur les réseaux sociaux',
'tweet_it' => 'Tweetez !',
- 'share_it' => 'Partagez !',
- 'delete-link' => 'Lien de suppression',
- 'some-bad' => 'Un problème est survenu',
- 'delete-first' => 'Supprimer au premier accès ?',
- 'delete-day' => 'Supprimer après 24 heures ?',
- 'upload_image' => 'Envoyez une image',
- 'image-only' => 'Seules les images sont acceptées',
- 'go' => 'Allons-y !',
- 'drag-n-drop' => 'Déposez vos images ici',
- 'or' => '-ou-',
- 'file-browser' => 'Cliquez pour utiliser le navigateur de fichier',
- 'image_not_found' => 'Impossible de trouver l\'image : elle a été supprimée.',
- 'no_more_short' => 'Il n\'y a plus d\'URL disponible. Veuillez réessayer ou contactez l\'administrateur. [_1].',
- 'no_valid_file' => 'Le fichier [_1] n\'est pas une image.',
- 'file_too_big' => 'Le fichier dépasse la limite de taille ([_1])',
- 'no_time_limit' => 'Pas de limitation de durée',
- '24_hours' => '24 heures',
- '7_days' => '7 jours',
- '30_days' => '30 jours',
- '1_year' => 'Un an',
- 'pushed-images' => ' images envoyées sur cette instance depuis le début.',
- 'graph-data-once-a-day' => 'Les données du graphique ne sont pas mises à jour en temps réél.',
- 'lutim-stats' => 'Statistiques de Lutim',
- 'back-to-index' => 'Retour à la page d\'accueil',
- 'stop_upload' => 'L\'envoi d\'images est actuellement désactivé, veuillez réessayer plus tard ou contacter l\'administrateur ([_1]).',
- 'download_error' => 'Une erreur est survenue lors du téléchargement de l\'image.',
- 'no_valid_url' => 'l\'URL n\'est pas valide.',
- 'image_url' => 'URL de l\'image',
- 'upload_image_url' => 'Déposer une image par son URL',
- 'delay_0' => 'pas de limitation de durée',
- 'delay_1' => '24 heures',
- 'delay_days' => '[_1] jours',
- 'delay_365' => '1 an',
- 'max_delay' => 'Attention ! Le délai maximal de rétention d\'une image est de [_1] jour(s), même si vous choisissez « pas de limitation de durée ».',
- 'crypt_image' => 'Chiffrer l\'image (Lutim ne stocke pas la clé).',
- 'always_encrypt' => 'Les images sont chiffrées sur le serveur (Lutim ne stocke pas la clé).',
- 'image_deleted' => 'L\'image [_1] a été supprimée avec succès.',
- 'invalid_token' => 'Le jeton de suppression est invalide.',
- 'already_deleted' => 'L\'image [_1] a déjà été supprimée.',
- 'install_as_webapp' => 'Installer la webapp',
- 'image_delay_modified' => 'Le délai de l\'image a été modifié avec succès.',
- 'image_mod_not_found' => 'Impossible de trouver l\'image [_1].',
- 'modify_image_error' => 'Une erreur est survenue lors de la tentative de modification de l\'image.',
+ 'share_it' => 'Partagez !',
+ 'delete-link' => 'Lien de suppression',
+ 'some-bad' => 'Un problème est survenu',
+ 'delete-first' => 'Supprimer au premier accès ?',
+ 'delete-day' => 'Supprimer après 24 heures ?',
+ 'upload_image' => 'Envoyez une image',
+ 'image-only' => 'Seules les images sont acceptées',
+ 'go' => 'Allons-y !',
+ 'drag-n-drop' => 'Déposez vos images ici',
+ 'or' => '-ou-',
+ 'file-browser' => 'Cliquez pour utiliser le navigateur de fichier',
+ 'image_not_found' => 'Impossible de trouver l\'image : elle a été supprimée.',
+ 'no_more_short' => 'Il n\'y a plus d\'URL disponible. Veuillez réessayer ou contactez l\'administrateur. [_1].',
+ 'no_valid_file' => 'Le fichier [_1] n\'est pas une image.',
+ 'file_too_big' => 'Le fichier dépasse la limite de taille ([_1])',
+ 'no_time_limit' => 'Pas de limitation de durée',
+ '24_hours' => '24 heures',
+ '7_days' => '7 jours',
+ '30_days' => '30 jours',
+ '1_year' => 'Un an',
+ 'pushed-images' => ' images envoyées sur cette instance depuis le début.',
+ 'graph-data-once-a-day' => 'Les données du graphique ne sont pas mises à jour en temps réél.',
+ 'lutim-stats' => 'Statistiques de Lutim',
+ 'back-to-index' => 'Retour à la page d\'accueil',
+ 'stop_upload' => 'L\'envoi d\'images est actuellement désactivé, veuillez réessayer plus tard ou contacter l\'administrateur ([_1]).',
+ 'download_error' => 'Une erreur est survenue lors du téléchargement de l\'image.',
+ 'no_valid_url' => 'l\'URL n\'est pas valide.',
+ 'image_url' => 'URL de l\'image',
+ 'upload_image_url' => 'Déposer une image par son URL',
+ 'delay_0' => 'pas de limitation de durée',
+ 'delay_1' => '24 heures',
+ 'delay_days' => '[_1] jours',
+ 'delay_365' => '1 an',
+ 'max_delay' => 'Attention ! Le délai maximal de rétention d\'une image est de [_1] jour(s), même si vous choisissez « pas de limitation de durée ».',
+ 'crypt_image' => 'Chiffrer l\'image (Lutim ne stocke pas la clé).',
+ 'always_encrypt' => 'Les images sont chiffrées sur le serveur (Lutim ne stocke pas la clé).',
+ 'image_deleted' => 'L\'image [_1] a été supprimée avec succès.',
+ 'invalid_token' => 'Le jeton de suppression est invalide.',
+ 'already_deleted' => 'L\'image [_1] a déjà été supprimée.',
+ 'install_as_webapp' => 'Installer la webapp',
+ 'image_delay_modified' => 'Le délai de l\'image a été modifié avec succès.',
+ 'image_mod_not_found' => 'Impossible de trouver l\'image [_1].',
+ 'modify_image_error' => 'Une erreur est survenue lors de la tentative de modification de l\'image.',
+ 'uploaded_files_by_days' => 'Nombre de fichiers envoyés, par jour',
+ 'evolution_total_files' => 'Évolution du nombre total de fichiers envoyés',
);
1;
diff --git a/sources/lutim-master/lib/LutimModel.pm b/sources/lutim-master/lib/LutimModel.pm
index 2af27e4..09c9b84 100644
--- a/sources/lutim-master/lib/LutimModel.pm
+++ b/sources/lutim-master/lib/LutimModel.pm
@@ -20,7 +20,9 @@ use ORLite {
created_at INTEGER,
created_by TEXT,
last_access_at INTEGER,
- mod_token TEXT)'
+ mod_token TEXT,
+ width INTEGER,
+ height INTEGER)'
);
return 1;
}
diff --git a/sources/lutim-master/lib/Mounter.pm b/sources/lutim-master/lib/Mounter.pm
new file mode 100644
index 0000000..4956688
--- /dev/null
+++ b/sources/lutim-master/lib/Mounter.pm
@@ -0,0 +1,24 @@
+package Mounter;
+use Mojo::Base 'Mojolicious';
+use FindBin qw($Bin);
+use File::Spec qw(catfile);
+
+# This method will run once at server start
+sub startup {
+ my $self = shift;
+
+ push @{$self->commands->namespaces}, 'Lutim::Command';
+
+ my $config = $self->plugin('Config' =>
+ {
+ file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
+ default => {
+ url_sub_dir => '/'
+ }
+ }
+ );
+
+ $self->plugin('Mount' => {$config->{url_sub_dir} => File::Spec->catfile($Bin, '..', 'script', 'application')});
+}
+
+1;
diff --git a/sources/lutim-master/lutim.conf.template b/sources/lutim-master/lutim.conf.template
index 0860055..f0c2906 100644
--- a/sources/lutim-master/lutim.conf.template
+++ b/sources/lutim-master/lutim.conf.template
@@ -36,9 +36,6 @@
#provis_step => 5,
# max number of URLs to be provisioned
- # WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- # in the first version, this option was provisionning with two 'n'. While the option with the typo is still valid, it is deprecated.
- # in the next version (0.4), only provisioning with ine 'n' will be accepted
# optional, default is 100
#provisioning => 100,
@@ -100,6 +97,12 @@
# optional, default is 24
#token_length => 24,
+ # URL sub-directory in which you want Lutim to be accessible
+ # example: you want to have Lutim under https://example.org/lutim/
+ # => set url_sub_dir to '/lutim' or to '/lutim/', it doesn't matter
+ # optional, defaut is /
+ #url_sub_dir => '/',
+
##########################
# Lutim cron jobs settings
##########################
diff --git a/sources/lutim-master/public/css/fontello-codes.css b/sources/lutim-master/public/css/fontello-codes.css
index 6af589a..1be7a3b 100644
--- a/sources/lutim-master/public/css/fontello-codes.css
+++ b/sources/lutim-master/public/css/fontello-codes.css
@@ -6,4 +6,5 @@
.icon-trash:before { content: '\e804'; } /* '' */
.icon-download:before { content: '\e805'; } /* '' */
.icon-spinner:before { content: '\e806'; } /* '' */
-.icon-eye:before { content: '\e807'; } /* '' */
\ No newline at end of file
+.icon-eye:before { content: '\e807'; } /* '' */
+.icon-share:before { content: '\e808'; } /* '' */
\ No newline at end of file
diff --git a/sources/lutim-master/public/css/fontello-embedded.css b/sources/lutim-master/public/css/fontello-embedded.css
index 4242dff..e5e57b0 100644
--- a/sources/lutim-master/public/css/fontello-embedded.css
+++ b/sources/lutim-master/public/css/fontello-embedded.css
@@ -1,15 +1,15 @@
@font-face {
font-family: 'fontello';
- src: url('../font/fontello.eot?1320532');
- src: url('../font/fontello.eot?1320532#iefix') format('embedded-opentype'),
- url('../font/fontello.svg?1320532#fontello') format('svg');
+ src: url('../font/fontello.eot?85136399');
+ src: url('../font/fontello.eot?85136399#iefix') format('embedded-opentype'),
+ url('../font/fontello.svg?85136399#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'fontello';
- src: url('data:application/octet-stream;base64,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') format('woff'),
- url('data:application/octet-stream;base64,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BEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhIyAgsAQmI0ZhOBsjsAhDRrACJbAIQ0cjRyNhYCCwBEOwgGJgIyCwACsjsARDYLAAK7AFJWGwBSWwgGKwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbAyLLAAFiAgILAFJiAuRyNHI2EjPDgtsDMssAAWILAII0IgICBGI0ewACsjYTgtsDQssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDUssAAWILAIQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDYsIyAuRrACJUZSWCA8WS6xJgEUKy2wNywjIC5GsAIlRlBYIDxZLrEmARQrLbA4LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEmARQrLbA5LLAwKyMgLkawAiVGUlggPFkusSYBFCstsDossDEriiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSYBFCuwBEMusCYrLbA7LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEmARQrLbA8LLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEmARQrLbA9LLAwKy6xJgEUKy2wPiywMSshIyAgPLAEI0IjOLEmARQrsARDLrAmKy2wPyywABUgR7AAI0KyAAEBFRQTLrAsKi2wQCywABUgR7AAI0KyAAEBFRQTLrAsKi2wQSyxAAEUE7AtKi2wQiywLyotsEMssAAWRSMgLiBGiiNhOLEmARQrLbBELLAII0KwQystsEUssgAAPCstsEYssgABPCstsEcssgEAPCstsEgssgEBPCstsEkssgAAPSstsEossgABPSstsEsssgEAPSstsEwssgEBPSstsE0ssgAAOSstsE4ssgABOSstsE8ssgEAOSstsFAssgEBOSstsFEssgAAOystsFIssgABOystsFMssgEAOystsFQssgEBOystsFUssgAAPistsFYssgABPistsFcssgEAPistsFgssgEBPistsFkssgAAOistsFossgABOistsFsssgEAOistsFwssgEBOistsF0ssDIrLrEmARQrLbBeLLAyK7A2Ky2wXyywMiuwNystsGAssAAWsDIrsDgrLbBhLLAzKy6xJgEUKy2wYiywMyuwNistsGMssDMrsDcrLbBkLLAzK7A4Ky2wZSywNCsusSYBFCstsGYssDQrsDYrLbBnLLA0K7A3Ky2waCywNCuwOCstsGkssDUrLrEmARQrLbBqLLA1K7A2Ky2wayywNSuwNystsGwssDUrsDgrLbBtLCuwCGWwAyRQeLABFTAtAAAAS7gAyFJYsQEBjlm5CAAIAGMgsAEjRLADI3CyBCgJRVJEsgoCByqxBgFEsSQBiFFYsECIWLEGA0SxJgGIUVi4BACIWLEGAURZWVlZuAH/hbAEjbEFAEQAAA==') format('truetype');
+ src: url('data:application/octet-stream;base64,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') format('woff'),
+ url('data:application/octet-stream;base64,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') format('truetype');
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'fontello';
- src: url('../font/fontello.svg?1320532#fontello') format('svg');
+ src: url('../font/fontello.svg?85136399#fontello') format('svg');
}
}
*/
@@ -59,4 +59,5 @@
.icon-trash:before { content: '\e804'; } /* '' */
.icon-download:before { content: '\e805'; } /* '' */
.icon-spinner:before { content: '\e806'; } /* '' */
-.icon-eye:before { content: '\e807'; } /* '' */
\ No newline at end of file
+.icon-eye:before { content: '\e807'; } /* '' */
+.icon-share:before { content: '\e808'; } /* '' */
\ No newline at end of file
diff --git a/sources/lutim-master/public/css/fontello-ie7-codes.css b/sources/lutim-master/public/css/fontello-ie7-codes.css
index d9822a1..77a4381 100644
--- a/sources/lutim-master/public/css/fontello-ie7-codes.css
+++ b/sources/lutim-master/public/css/fontello-ie7-codes.css
@@ -6,4 +6,5 @@
.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
+.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
diff --git a/sources/lutim-master/public/css/fontello-ie7.css b/sources/lutim-master/public/css/fontello-ie7.css
index dcb157e..81608ba 100644
--- a/sources/lutim-master/public/css/fontello-ie7.css
+++ b/sources/lutim-master/public/css/fontello-ie7.css
@@ -17,4 +17,5 @@
.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
+.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
diff --git a/sources/lutim-master/public/css/fontello.css b/sources/lutim-master/public/css/fontello.css
index 2842004..85eb1f7 100644
--- a/sources/lutim-master/public/css/fontello.css
+++ b/sources/lutim-master/public/css/fontello.css
@@ -1,10 +1,10 @@
@font-face {
font-family: 'fontello';
- src: url('../font/fontello.eot?47445522');
- src: url('../font/fontello.eot?47445522#iefix') format('embedded-opentype'),
- url('../font/fontello.woff?47445522') format('woff'),
- url('../font/fontello.ttf?47445522') format('truetype'),
- url('../font/fontello.svg?47445522#fontello') format('svg');
+ src: url('../font/fontello.eot?96982888');
+ src: url('../font/fontello.eot?96982888#iefix') format('embedded-opentype'),
+ url('../font/fontello.woff?96982888') format('woff'),
+ url('../font/fontello.ttf?96982888') format('truetype'),
+ url('../font/fontello.svg?96982888#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
@@ -14,7 +14,7 @@
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'fontello';
- src: url('../font/fontello.svg?47445522#fontello') format('svg');
+ src: url('../font/fontello.svg?96982888#fontello') format('svg');
}
}
*/
@@ -57,4 +57,5 @@
.icon-trash:before { content: '\e804'; } /* '' */
.icon-download:before { content: '\e805'; } /* '' */
.icon-spinner:before { content: '\e806'; } /* '' */
-.icon-eye:before { content: '\e807'; } /* '' */
\ No newline at end of file
+.icon-eye:before { content: '\e807'; } /* '' */
+.icon-share:before { content: '\e808'; } /* '' */
\ No newline at end of file
diff --git a/sources/lutim-master/public/font/LICENSE.txt b/sources/lutim-master/public/font/LICENSE.txt
new file mode 100644
index 0000000..86f1f13
--- /dev/null
+++ b/sources/lutim-master/public/font/LICENSE.txt
@@ -0,0 +1,30 @@
+Font license info
+
+
+## Font Awesome
+
+ Copyright (C) 2012 by Dave Gandy
+
+ Author: Dave Gandy
+ License: SIL ()
+ Homepage: http://fortawesome.github.com/Font-Awesome/
+
+
+## Zocial
+
+ Copyright (C) 2012 by Sam Collins
+
+ Author: Sam Collins
+ License: MIT (http://opensource.org/licenses/mit-license.php)
+ Homepage: http://zocial.smcllns.com/
+
+
+## MFG Labs
+
+ Copyright (C) 2012 by Daniel Bruce
+
+ Author: MFG Labs
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://www.mfglabs.com/
+
+
diff --git a/sources/lutim-master/public/font/fontello.eot b/sources/lutim-master/public/font/fontello.eot
index 995b74d..219ce81 100644
Binary files a/sources/lutim-master/public/font/fontello.eot and b/sources/lutim-master/public/font/fontello.eot differ
diff --git a/sources/lutim-master/public/font/fontello.svg b/sources/lutim-master/public/font/fontello.svg
index 3b57dbd..93c1f14 100644
--- a/sources/lutim-master/public/font/fontello.svg
+++ b/sources/lutim-master/public/font/fontello.svg
@@ -6,14 +6,15 @@
-
-
+
+
-
-
-
+
+
+
-
+
+
\ No newline at end of file
diff --git a/sources/lutim-master/public/font/fontello.ttf b/sources/lutim-master/public/font/fontello.ttf
index e2f3b69..c05d334 100644
Binary files a/sources/lutim-master/public/font/fontello.ttf and b/sources/lutim-master/public/font/fontello.ttf differ
diff --git a/sources/lutim-master/public/font/fontello.woff b/sources/lutim-master/public/font/fontello.woff
index 57a3a91..65cb790 100644
Binary files a/sources/lutim-master/public/font/fontello.woff and b/sources/lutim-master/public/font/fontello.woff differ
diff --git a/sources/lutim-master/public/js/freezeframe.js b/sources/lutim-master/public/js/freezeframe.js
new file mode 100644
index 0000000..9cda8ec
--- /dev/null
+++ b/sources/lutim-master/public/js/freezeframe.js
@@ -0,0 +1,390 @@
+/* -----------------------------------------------------------------------------
+ * Freezeframe
+ * freezeframe.js v2.0.2
+ * 2014 Chris Antonellis
+ *
+ * Freezeframe.js is a script that automatically pauses animated GIFs and
+ * enables them to start animating on mouse hover.
+ *
+ * Website: http://freezeframe.chrisantonellis.com/
+ * Documentation: http://freezeframe.chrisantonellis.com/documentation/
+ *
+ * Licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License
+ * http://creativecommons.org/licenses/by-sa/3.0/deed.en_US
+ * -------------------------------------------------------------------------- */
+
+FreezeFrame = (function($) {
+
+ var _ff;
+ var canvas;
+ var context;
+
+ var class_name;
+ var trigger_event;
+ var support_touch_devices;
+ var animation_play_duration;
+
+ var loading_background_color;
+ var loading_background_image;
+ var loading_background_position;
+ var loading_fade_in_speed;
+
+ var animation_icon_image;
+ var animation_icon_position;
+ var animation_fade_out_speed;
+
+ var is_touch_device;
+ var freezeframe_count;
+
+ function FreezeFrame( _options ) {
+
+ _ff = this;
+
+ _options.class_name == null ?
+ this.class_name = "freezeframe" :
+ this.class_name = _options.class_name;
+
+ _options.trigger_event == null ?
+ this.trigger_event = "hover" :
+ this.trigger_event = _options.trigger_event.toLowerCase();
+
+ _options.support_touch_devices == null ?
+ this.support_touch_devices = true :
+ this.support_touch_devuces = _options.support_touch_devices.toLowerCase();
+
+ _options.animation_play_duration == null ?
+ this.animation_play_duration = 10000 :
+ this.animation_play_duration = parseInt(_options.animation_play_duration);
+
+ _options.loading_background_color == null ?
+ this.loading_background_color = "#666" :
+ this.loading_background_color = _options.loading_background_color.toLowerCase();
+
+ _options.loading_background_image == null ?
+ this.loading_background_image = "data:image/gif;base64,R0lGODlhEAAQAPIAAGZmZv///4mJidbW1v///8PDw7CwsKampiH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQACgABACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkEAAoAAgAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkEAAoAAwAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkEAAoABAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQACgAFACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQACgAGACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAAKAAcALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" :
+ this.loading_background_image = _options.loading_background_image;
+
+ _options.loading_background_position == null ?
+ this.loading_background_position = "center center" :
+ this.loading_background_position = _options.loading_background_position.toLowerCase();
+
+ _options.animation_icon_image == null ?
+ this.animation_icon_image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAl9JREFUeNrs2s2K2lAUAGATb3TE2Cr+oaJQNFOh1MVsxK0OuJbSdX2V9gG67GqW3RbaB7B9gy7qgKJF8G/EarHVWGMyJj230EXLLITm6q05F44/IVw5X3JPjiGCZVkuJw/R5fCBAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAjwjyMej79MpVKP/hcAwe6boul0+p3P5/vmdruv4evbVqvVdRRALpd7HQqFpn6/XxUEwdI07UZV1ffNZvMzjwDE7gk9Hs8mGAwuYCl8hTNB32630nw+f1IqlRY8QtgOQAjRZVleJxKJ77AcVLptOBwup9PpPR4hbAcQRdGUJOk2HA5riqKokUjEgKK4GY/HKo8QhMGcv4oKIJg0+Xw+r8H7bSaT0XiEICwnhyLoCgQCptfrNSgCjxDkED8ChdGiwSMEOaQ2jxDkGOtuH4jJZHJ/Nps9LRaLi+Vy2WDVUB0FYB+IXq+36ff7P0ajURj2eQbF9EO73W6cFMBdENA8mXQbNFDier0mhULhQaVSeZzNZj+d3Bnwe+i6LkDCAqx9QmMwGJwlk8nzarV6Cf3EDHZ5DvHx5ADuSjwWiz0sl8uX8H9izjLxowLskfgL1okfBYCnxA8KwGPiBwGg9xpWq5XIY+IsAQT6stvt6BGX4Nrt4jFxZgCmaYqGYRDo4nzdbncny3KGx8SZAcCRl6CH9yuKcl6r1S6i0egXHhP/Y53aGfV6/U2n02nA5yuIC7vntzsEBo/KXkG84vaI/12w8Flhhw8EQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEcNr4KcAABsB8S2vxAV8AAAAASUVORK5CYII=" :
+ this.animation_icon_image = _options.animation_icon_image;
+
+ _options.animation_icon_position == null ?
+ this.animation_icon_position = "top left" :
+ this.animation_icon_position = _options.animation_icon_position.toLowerCase();
+
+ _options.loading_fade_in_speed == null ?
+ this.loading_fade_in_speed = 500 :
+ this.loading_fade_in_speed = parseInt(_options.loading_fade_in_speed);
+
+ _options.animation_fade_out_speed == null ?
+ this.animation_fade_out_speed = 250 :
+ this.animation_fade_out_speed = parseInt(_options.animation_fade_out_speed);
+
+ this.is_touch_device = isMouseEventSupported("ontouchstart");
+ this.freezeframe_count = 0;
+ };
+
+ /** --------------------------------------------------------------------------
+ * @function .setup()
+ * Sets up the freezeframe instance by adding a canvas element to the
+ * document and capturing references to the canvas and its 2D context
+ * ------------------------------------------------------------------------ */
+
+ FreezeFrame.prototype.setup = function() {
+ $("",{id:"freezeframe-canvas"})
+ .css("display", "none")
+ .prependTo($("body"));
+ this.canvas = $("canvas#freezeframe-canvas");
+ this.context = this.canvas[0].getContext('2d');
+ };
+
+ /** --------------------------------------------------------------------------
+ * .run()
+ * Starts freezeframe processing for each image. Copies the image to
+ * the freezeframe canvas and converts it to a data url
+ * ------------------------------------------------------------------------ */
+
+ FreezeFrame.prototype.run = function() {
+ var images = [];
+ var ext;
+ var figure_background = _ff.loading_background_color;
+
+ if( _ff.loading_background_image !== false ) {
+ figure_background += " url('" + _ff.loading_background_image + "') " +
+ _ff.loading_background_position + " no-repeat";
+ }
+
+ // Select all images with a class matching the option class_name
+ images = $('img[class*="' + _ff.class_name + '"]')
+ .not('[class*="' + _ff.class_name + '_done"]');
+
+ // Process each image by resetting the animation sequence, copying to the
+ // canvas, converting to a data url, and attaching that data url to the
+ // image itself as an attribute
+ $(images).each(function(index) {
+ // Change image class so it won't be reprocessed if .run() is run again
+ $(this).removeClass(_ff.class_name).addClass(_ff.class_name + "_done");
+ // Set cross-origin to anon to load images from remote services that send
+ // the correct header. Not working correctly, needs more testing
+ $(this).crossOrigin = "anonymous";
+ // Determine file extension
+ ext = $(this)[0].src.split(".");
+ ext = ext[ext.length - 1].toLowerCase();
+ // Remove non GIF files
+ if(ext !== "gif") {
+ images.splice(index, 1);
+ } else {
+
+ var freezeframe_figure = $(" ")
+ .attr("class", "freezeframe-container " + _ff.freezeframe_count)
+ .css({"display": "inline-block",
+ "overflow": "hidden",
+ "margin": 0,
+ "background-size": "100% auto",
+ "width": "100%",
+ "max-height": "100%",
+ "background": figure_background});
+
+ $(this).css({"opacity": 0,
+ "display": "block"})
+ .wrap(freezeframe_figure);
+
+ freezeframe_figure = $(this).parent();
+
+ // If an animation icon image is available, attach it
+ if(_ff.animation_icon_image !== false) {
+ var animation_icon = $("
")
+ .attr("class", "freezeframe-animation-icon")
+ .css({"display": "block",
+ "position": "absolute",
+ "background": "transparent " + "url('" + _ff.animation_icon_image + "') " +
+ _ff.animation_icon_position + " no-repeat",
+ "pointer-events": "none",
+ "z-index": 100,
+ "opacity": 0});
+
+ $(freezeframe_figure).prepend(animation_icon);
+
+ animation_icon = $(this).siblings($(".freezeframe-animation-icon"));
+ }
+
+ // Increment counter so each image gets a unique number
+ _ff.freezeframe_count++;
+
+ // Create a temporary refernce to the image as non-object to pass to .drawImage
+ var _self = this;
+
+ // Using imagesLoaded by Desandro because .load doesn't work on cached images
+ $(this).imagesLoaded(function() {
+
+ $(this).off("imagesLoaded");
+
+ _ff.canvas[0].width = $(this)[0].clientWidth;
+ _ff.canvas[0].height = $(this)[0].clientHeight;
+
+ $(this).attr("animated", $(this).attr("src"))
+ .attr("src", $(this).attr("src"));
+
+ _ff.context.drawImage(_self, 0, 0, $(this)[0].clientWidth, $(this)[0].clientHeight);
+
+ $(this).attr("src", _ff.canvas[0].toDataURL());
+
+ // If an animation icon image is available, show it
+ if(_ff.animation_icon_image !== false) {
+ $(animation_icon).css({
+ "width": parseInt($(this)[0].width),
+ "height": parseInt($(this)[0].height)})
+ .animate({"opacity": 1}, _ff.loading_fade_in_speed);
+ }
+
+ // When fade in sequence is complete, enable interaction
+ $(this).animate({"opacity": 1}, _ff.loading_fade_in_speed, function() {
+
+ $(freezeframe_figure).css("background", "url('" + $(this).attr("src") + "')");
+
+ $(this).css("opacity", 0)
+ .attr("src", $(this).attr("animated"));
+
+ // Touch Device or Click Event
+ if((_ff.support_touch_devices && _ff.is_touch_device) || _ff.trigger_event.toLowerCase() == "click") {
+
+ var stop_animation;
+ var animating = false;
+
+ $(this).click(function() {
+
+ // If not currently animating, start animating
+ if(!animating) {
+ $(this).attr("src", $(this).attr("src"))
+ .css("opacity", 1);
+ if(_ff.animation_icon_image !== false) {
+ $(animation_icon).css("opacity", 0);
+ }
+
+ stop_animation = setInterval(function() {
+ clearInterval(stop_animation);
+ this.animate({"opacity": 0}, _ff.animation_fade_out_speed);
+ if(_ff.animation_icon_image !== false) {
+ $(animation_icon).animate({"opacity": 1}, _ff.animation_fade_out_speed);
+ }
+ animating = false;
+ }, _ff.animation_play_duration);
+ animating = true;
+
+ // If currently animating, stop animating
+ } else {
+ clearInterval(stop_animation);
+ $(this).animate({"opacity": 0}, _ff.animation_fade_out_speed);
+ if(_ff.animation_icon_image !== false) {
+ $(animation_icon).animate({"opacity": 1}, _ff.animation_fade_out_speed);
+ }
+ animating = false;
+ }
+ });
+
+ } else {
+
+ // Hover Event
+ $(this).mouseenter(function() {
+ $(this).attr("src", $(this).attr("src"))
+ .css("opacity", 1);
+ if(_ff.animation_icon_image !== false) {
+ $(animation_icon).css("opacity", 0);
+ }
+ });
+
+ $(this).mouseleave(function() {
+ $(this).animate({"opacity": 0}, _ff.animation_fade_out_speed);
+ if(_ff.animation_icon_image !== false) {
+ $(animation_icon).animate({"opacity": 1}, _ff.animation_fade_out_speed);
+ }
+ });
+ }
+ });
+ });
+ }
+ });
+ };
+
+ return FreezeFrame;
+})(jQuery);
+
+/** ----------------------------------------------------------------------------
+ * Setup & Run Freezeframe
+ * -------------------------------------------------------------------------- */
+
+jQuery(document).ready(function($) {
+ typeof(freezeframe_options) == 'undefined' ? freezeframe_options = {} : null;
+ freezeframe = new FreezeFrame(freezeframe_options);
+ freezeframe.setup();
+ freezeframe.run();
+});
+
+/** ----------------------------------------------------------------------------
+ * jQuery imagesLoaded plugin v2.1.1
+ * http://github.com/desandro/imagesloaded
+ *
+ * MIT License. by Paul Irish et al.
+ * -------------------------------------------------------------------------- */
+
+;(function($, undefined) {
+'use strict';
+var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
+$.fn.imagesLoaded = function( callback ) {
+ var $this = this,
+ deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
+ hasNotify = $.isFunction(deferred.notify),
+ $images = $this.find('img').add( $this.filter('img') ),
+ loaded = [],
+ proper = [],
+ broken = [];
+ if ($.isPlainObject(callback)) {
+ $.each(callback, function (key, value) {
+ if (key === 'callback') {
+ callback = value;
+ } else if (deferred) {
+ deferred[key](value);
+ }
+ });
+ }
+ function doneLoading() {
+ var $proper = $(proper),
+ $broken = $(broken);
+ if ( deferred ) {
+ if ( broken.length ) {
+ deferred.reject( $images, $proper, $broken );
+ } else {
+ deferred.resolve( $images );
+ }
+ }
+ if ( $.isFunction( callback ) ) {
+ callback.call( $this, $images, $proper, $broken );
+ }
+ }
+ function imgLoadedHandler( event ) {
+ imgLoaded( event.target, event.type === 'error' );
+ }
+ function imgLoaded( img, isBroken ) {
+ if ( img.src === BLANK || $.inArray( img, loaded ) !== -1 ) {
+ return;
+ }
+ loaded.push( img );
+ if ( isBroken ) {
+ broken.push( img );
+ } else {
+ proper.push( img );
+ }
+ $.data( img, 'imagesLoaded', { isBroken: isBroken, src: img.src } );
+ if ( hasNotify ) {
+ deferred.notifyWith( $(img), [ isBroken, $images, $(proper), $(broken) ] );
+ }
+ if ( $images.length === loaded.length ) {
+ setTimeout( doneLoading );
+ $images.unbind( '.imagesLoaded', imgLoadedHandler );
+ }
+ }
+ if ( !$images.length ) {
+ doneLoading();
+ } else {
+ $images.bind( 'load.imagesLoaded error.imagesLoaded', imgLoadedHandler )
+ .each( function( i, el ) {
+ var src = el.src;
+ var cached = $.data( el, 'imagesLoaded' );
+ if ( cached && cached.src === src ) {
+ imgLoaded( el, cached.isBroken );
+ return;
+ }
+ if ( el.complete && el.naturalWidth !== undefined ) {
+ imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 );
+ return;
+ }
+ if ( el.readyState || el.complete ) {
+ el.src = BLANK;
+ el.src = src;
+ }
+ });
+ }
+ return deferred ? deferred.promise( $this ) : $this;
+};
+})(jQuery);
+
+/** ----------------------------------------------------------------------------
+ * isMouseEventSupported by kangax
+ * http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
+ * -------------------------------------------------------------------------- */
+
+function isMouseEventSupported(eventName) {
+ var el = document.createElement('div');
+ eventName = 'on' + eventName;
+ var isSupported = (eventName in el);
+ if (!isSupported) {
+ el.setAttribute(eventName, 'return;');
+ isSupported = typeof el[eventName] == 'function';
+ }
+ el = null;
+ return isSupported;
+}
diff --git a/sources/lutim-master/public/js/freezeframe.min.js b/sources/lutim-master/public/js/freezeframe.min.js
new file mode 100644
index 0000000..30650d4
--- /dev/null
+++ b/sources/lutim-master/public/js/freezeframe.min.js
@@ -0,0 +1 @@
+function isMouseEventSupported(e){var t=document.createElement("div");e="on"+e;var n=e in t;if(!n){t.setAttribute(e,"return;");n=typeof t[e]=="function"}t=null;return n}FreezeFrame=function(e){function g(e){t=this;e.class_name==null?this.class_name="freezeframe":this.class_name=e.class_name;e.trigger_event==null?this.trigger_event="hover":this.trigger_event=e.trigger_event.toLowerCase();e.support_touch_devices==null?this.support_touch_devices=true:this.support_touch_devuces=e.support_touch_devices.toLowerCase();e.animation_play_duration==null?this.animation_play_duration=1e4:this.animation_play_duration=parseInt(e.animation_play_duration);e.loading_background_color==null?this.loading_background_color="#666":this.loading_background_color=e.loading_background_color.toLowerCase();e.loading_background_image==null?this.loading_background_image="data:image/gif;base64,R0lGODlhEAAQAPIAAGZmZv///4mJidbW1v///8PDw7CwsKampiH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQACgABACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkEAAoAAgAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkEAAoAAwAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkEAAoABAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQACgAFACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQACgAGACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAAKAAcALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==":this.loading_background_image=e.loading_background_image;e.loading_background_position==null?this.loading_background_position="center center":this.loading_background_position=e.loading_background_position.toLowerCase();e.animation_icon_image==null?this.animation_icon_image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAl9JREFUeNrs2s2K2lAUAGATb3TE2Cr+oaJQNFOh1MVsxK0OuJbSdX2V9gG67GqW3RbaB7B9gy7qgKJF8G/EarHVWGMyJj230EXLLITm6q05F44/IVw5X3JPjiGCZVkuJw/R5fCBAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAjwjyMej79MpVKP/hcAwe6boul0+p3P5/vmdruv4evbVqvVdRRALpd7HQqFpn6/XxUEwdI07UZV1ffNZvMzjwDE7gk9Hs8mGAwuYCl8hTNB32630nw+f1IqlRY8QtgOQAjRZVleJxKJ77AcVLptOBwup9PpPR4hbAcQRdGUJOk2HA5riqKokUjEgKK4GY/HKo8QhMGcv4oKIJg0+Xw+r8H7bSaT0XiEICwnhyLoCgQCptfrNSgCjxDkED8ChdGiwSMEOaQ2jxDkGOtuH4jJZHJ/Nps9LRaLi+Vy2WDVUB0FYB+IXq+36ff7P0ajURj2eQbF9EO73W6cFMBdENA8mXQbNFDier0mhULhQaVSeZzNZj+d3Bnwe+i6LkDCAqx9QmMwGJwlk8nzarV6Cf3EDHZ5DvHx5ADuSjwWiz0sl8uX8H9izjLxowLskfgL1okfBYCnxA8KwGPiBwGg9xpWq5XIY+IsAQT6stvt6BGX4Nrt4jFxZgCmaYqGYRDo4nzdbncny3KGx8SZAcCRl6CH9yuKcl6r1S6i0egXHhP/Y53aGfV6/U2n02nA5yuIC7vntzsEBo/KXkG84vaI/12w8Flhhw8EQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEcNr4KcAABsB8S2vxAV8AAAAASUVORK5CYII=":this.animation_icon_image=e.animation_icon_image;e.animation_icon_position==null?this.animation_icon_position="top left":this.animation_icon_position=e.animation_icon_position.toLowerCase();e.loading_fade_in_speed==null?this.loading_fade_in_speed=500:this.loading_fade_in_speed=parseInt(e.loading_fade_in_speed);e.animation_fade_out_speed==null?this.animation_fade_out_speed=250:this.animation_fade_out_speed=parseInt(e.animation_fade_out_speed);this.is_touch_device=isMouseEventSupported("ontouchstart");this.freezeframe_count=0}var t;var n;var r;var i;var s;var o;var u;var a;var f;var l;var c;var h;var p;var d;var v;var m;g.prototype.setup=function(){e("",{id:"freezeframe-canvas"}).css("display","none").prependTo(e("body"));this.canvas=e("canvas#freezeframe-canvas");this.context=this.canvas[0].getContext("2d")};g.prototype.run=function(){var n=[];var r;var i=t.loading_background_color;if(t.loading_background_image!==false){i+=" url('"+t.loading_background_image+"') "+t.loading_background_position+" no-repeat"}n=e('img[class*="'+t.class_name+'"]').not('[class*="'+t.class_name+'_done"]');e(n).each(function(s){e(this).removeClass(t.class_name).addClass(t.class_name+"_done");e(this).crossOrigin="anonymous";r=e(this)[0].src.split(".");r=r[r.length-1].toLowerCase();if(r!=="gif"){n.splice(s,1)}else{var o=e(" ").attr("class","freezeframe-container "+t.freezeframe_count).css({display:"inline-block",overflow:"hidden","margin":0,"background-size":"100% auto","width":"100%","max-height":"100%",background:i});e(this).css({opacity:0,display:"block"}).wrap(o);o=e(this).parent();if(t.animation_icon_image!==false){var u=e("
").attr("class","freezeframe-animation-icon").css({display:"block",position:"absolute",background:"transparent "+"url('"+t.animation_icon_image+"') "+t.animation_icon_position+" no-repeat","pointer-events":"none","z-index":100,opacity:0});e(o).prepend(u);u=e(this).siblings(e(".freezeframe-animation-icon"))}t.freezeframe_count++;var a=this;e(this).imagesLoaded(function(){e(this).off("imagesLoaded");t.canvas[0].width=e(this)[0].clientWidth;t.canvas[0].height=e(this)[0].clientHeight;e(this).attr("animated",e(this).attr("src")).attr("src",e(this).attr("src"));t.context.drawImage(a,0,0,e(this)[0].clientWidth,e(this)[0].clientHeight);e(this).attr("src",t.canvas[0].toDataURL());if(t.animation_icon_image!==false){e(u).css({width:parseInt(e(this)[0].width),height:parseInt(e(this)[0].height)}).animate({opacity:1},t.loading_fade_in_speed)}e(this).animate({opacity:1},t.loading_fade_in_speed,function(){e(o).css("background","url('"+e(this).attr("src")+"')");e(this).css("opacity",0).attr("src",e(this).attr("animated"));if(t.support_touch_devices&&t.is_touch_device||t.trigger_event.toLowerCase()=="click"){var n;var r=false;e(this).click(function(){if(!r){e(this).attr("src",e(this).attr("src")).css("opacity",1);if(t.animation_icon_image!==false){e(u).css("opacity",0)}n=setInterval(function(){clearInterval(n);this.animate({opacity:0},t.animation_fade_out_speed);if(t.animation_icon_image!==false){e(u).animate({opacity:1},t.animation_fade_out_speed)}r=false},t.animation_play_duration);r=true}else{clearInterval(n);e(this).animate({opacity:0},t.animation_fade_out_speed);if(t.animation_icon_image!==false){e(u).animate({opacity:1},t.animation_fade_out_speed)}r=false}})}else{e(this).mouseenter(function(){e(this).attr("src",e(this).attr("src")).css("opacity",1);if(t.animation_icon_image!==false){e(u).css("opacity",0)}});e(this).mouseleave(function(){e(this).animate({opacity:0},t.animation_fade_out_speed);if(t.animation_icon_image!==false){e(u).animate({opacity:1},t.animation_fade_out_speed)}})}})})}})};return g}(jQuery);jQuery(document).ready(function(e){typeof freezeframe_options=="undefined"?freezeframe_options={}:null;freezeframe=new FreezeFrame(freezeframe_options);freezeframe.setup();freezeframe.run()});(function(e,t){"use strict";var n="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";e.fn.imagesLoaded=function(r){function c(){var t=e(f),n=e(l);if(s){if(l.length){s.reject(u,t,n)}else{s.resolve(u)}}if(e.isFunction(r)){r.call(i,u,t,n)}}function h(e){p(e.target,e.type==="error")}function p(t,r){if(t.src===n||e.inArray(t,a)!==-1){return}a.push(t);if(r){l.push(t)}else{f.push(t)}e.data(t,"imagesLoaded",{isBroken:r,src:t.src});if(o){s.notifyWith(e(t),[r,u,e(f),e(l)])}if(u.length===a.length){setTimeout(c);u.unbind(".imagesLoaded",h)}}var i=this,s=e.isFunction(e.Deferred)?e.Deferred():0,o=e.isFunction(s.notify),u=i.find("img").add(i.filter("img")),a=[],f=[],l=[];if(e.isPlainObject(r)){e.each(r,function(e,t){if(e==="callback"){r=t}else if(s){s[e](t)}})}if(!u.length){c()}else{u.bind("load.imagesLoaded error.imagesLoaded",h).each(function(r,i){var s=i.src;var o=e.data(i,"imagesLoaded");if(o&&o.src===s){p(i,o.isBroken);return}if(i.complete&&i.naturalWidth!==t){p(i,i.naturalWidth===0||i.naturalHeight===0);return}if(i.readyState||i.complete){i.src=n;i.src=s}})}return s?s.promise(i):i}})(jQuery)
diff --git a/sources/lutim-master/script/application b/sources/lutim-master/script/application
new file mode 100755
index 0000000..08b5fd5
--- /dev/null
+++ b/sources/lutim-master/script/application
@@ -0,0 +1,11 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use FindBin;
+BEGIN { unshift @INC, "$FindBin::Bin/../lib" }
+
+# Start command line interface for application
+require Mojolicious::Commands;
+Mojolicious::Commands->start_app('Lutim');
diff --git a/sources/lutim-master/script/lutim b/sources/lutim-master/script/lutim
index 08b5fd5..9bae556 100755
--- a/sources/lutim-master/script/lutim
+++ b/sources/lutim-master/script/lutim
@@ -8,4 +8,4 @@ BEGIN { unshift @INC, "$FindBin::Bin/../lib" }
# Start command line interface for application
require Mojolicious::Commands;
-Mojolicious::Commands->start_app('Lutim');
+Mojolicious::Commands->start_app('Mounter');
diff --git a/sources/lutim-master/templates/about.html.ep b/sources/lutim-master/templates/about.html.ep
index e8d0e64..b6961e4 100644
--- a/sources/lutim-master/templates/about.html.ep
+++ b/sources/lutim-master/templates/about.html.ep
@@ -1,5 +1,5 @@
% # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab:
- <%==l 'informations-body', url_for('/')->to_abs(), config('contact') %>
- <%= link_to url_for('index') => ( class => "btn btn-primary btn-lg" ) => begin %><%=l 'back-to-index' %><% end%>
+ <%==l 'informations-body', index_url(1), config('contact') %>
+ <%= link_to index_url => ( class => "btn btn-primary btn-lg" ) => begin %><%=l 'back-to-index' %><% end%>
diff --git a/sources/lutim-master/templates/index.html.ep b/sources/lutim-master/templates/index.html.ep
index 39dcb80..7bba7e6 100644
--- a/sources/lutim-master/templates/index.html.ep
+++ b/sources/lutim-master/templates/index.html.ep
@@ -10,14 +10,14 @@
% }
% # Display image informations
- % my $url = url_for('/')->to_abs().stash('short');
+ % my $url = index_url(1).stash('short');
<%= stash('filename') %>
<%=l 'tweet_it' %>
% my $delete_url = url_for('delete', {short => stash('real_short'), token => stash('token')})->to_abs();
<%= link_to $url => begin %> <%= $url %> <%= end %>
<%= link_to $url.'?dl' => begin %> <%= $url.'?dl' %> <%= end %>
- <%= link_to $url.'?t' => begin %> <%= $url.'?t' %> <%= end %>
+ <%= link_to $url.'?t' => begin %> <%= $url.'?t' %> <%= end %>
<%= link_to $delete_url => begin %> <%= $delete_url %> <%= end %>
@@ -76,7 +76,7 @@
-